diff --git a/dd-java-agent/build.gradle b/dd-java-agent/build.gradle index a34b233cea9..f05fe7ca779 100644 --- a/dd-java-agent/build.gradle +++ b/dd-java-agent/build.gradle @@ -19,8 +19,16 @@ configurations { def includedAgentDir = project.layout.buildDirectory.dir("generated/included") def includedJarFileTree = fileTree(includedAgentDir) +def pomPropertiesDir = project.layout.buildDirectory.dir("generated/maven-metadata") +def pomPropertiesFileTree = fileTree(pomPropertiesDir) + tasks.named("processResources") { dependsOn(includedJarFileTree) + dependsOn(pomPropertiesFileTree) +} + +tasks.named("sourcesJar") { + dependsOn(pomPropertiesFileTree) } sourceSets { @@ -33,7 +41,7 @@ sourceSets { "main_java11" { java.srcDirs "${project.projectDir}/src/main/java11" } - main.resources.srcDir(includedAgentDir) + main.resources.srcDirs(includedAgentDir, pomPropertiesDir) } def java6CompileTask = tasks.named("compileMain_java6Java") { @@ -324,6 +332,14 @@ def generateAgentJarIndex = tasks.register('generateAgentJarIndex', JavaExec) { } sourceSets.main.resources.srcDir(generateAgentJarIndex) +def generatePomProperties = tasks.register('generatePomProperties', WriteProperties) { + destinationFile = pomPropertiesDir.map { it.file("META-INF/maven/com.datadoghq/dd-java-agent/pom.properties") } + property("groupId", "com.datadoghq") + property("artifactId", "dd-java-agent") + property("version", project.providers.provider { project.version.toString() }) +} +pomPropertiesFileTree.builtBy(generatePomProperties) + subprojects { Project subProj -> // Don't need javadoc task run for internal projects. subProj.tasks.withType(Javadoc).configureEach { enabled = false } diff --git a/dd-smoke-tests/src/main/groovy/datadog/smoketest/AbstractServerSmokeTest.groovy b/dd-smoke-tests/src/main/groovy/datadog/smoketest/AbstractServerSmokeTest.groovy index 19972aae71a..bb1b90304d4 100644 --- a/dd-smoke-tests/src/main/groovy/datadog/smoketest/AbstractServerSmokeTest.groovy +++ b/dd-smoke-tests/src/main/groovy/datadog/smoketest/AbstractServerSmokeTest.groovy @@ -183,7 +183,7 @@ abstract class AbstractServerSmokeTest extends AbstractSmokeTest { and: 'received tracer dependencies' // Not exhaustive list of tracer dependencies. - Set missingDependencyNames = ['com.github.jnr:jnr-ffi', 'net.bytebuddy:byte-buddy-agent',].toSet() + Set missingDependencyNames = ['com.datadoghq:dd-java-agent', 'com.github.jnr:jnr-ffi', 'net.bytebuddy:byte-buddy-agent',].toSet() missingDependencyNames.removeAll(dependencyNames) || true missingDependencyNames.isEmpty() diff --git a/telemetry/src/test/groovy/datadog/telemetry/dependency/DependencyResolverSpecification.groovy b/telemetry/src/test/groovy/datadog/telemetry/dependency/DependencyResolverSpecification.groovy index 4437f1a1c65..6e8096bc57a 100644 --- a/telemetry/src/test/groovy/datadog/telemetry/dependency/DependencyResolverSpecification.groovy +++ b/telemetry/src/test/groovy/datadog/telemetry/dependency/DependencyResolverSpecification.groovy @@ -95,6 +95,26 @@ class DependencyResolverSpecification extends DepSpecification { ) } + void 'jar with dd-java-agent pom.properties resolves to com.datadoghq:dd-java-agent'() { + given: 'a jar containing META-INF/maven/com.datadoghq/dd-java-agent/pom.properties' + File file = new File(testDir, 'dd-java-agent.jar') + new ZipOutputStream(new FileOutputStream(file)).with { + putNextEntry(new ZipEntry('META-INF/maven/com.datadoghq/dd-java-agent/pom.properties')) + write('groupId=com.datadoghq\nartifactId=dd-java-agent\nversion=1.0.0\n'.getBytes('UTF-8')) + closeEntry() + close() + } + + when: + List deps = DependencyResolver.resolve(file.toURI()) + + then: + deps.size() == 1 + deps[0].name == 'com.datadoghq:dd-java-agent' + deps[0].version == '1.0.0' + deps[0].hash == null + } + void 'jar without manifest and no version in filename gets resolved'() { // If no manifest info and no suitable file name - calculate sha1 hash knownJarCheck(