Skip to content

Commit f34cb20

Browse files
jandro996claude
andcommitted
Report dd-java-agent itself as a Maven dependency in SCA telemetry
Generate META-INF/maven/com.datadoghq/dd-java-agent/pom.properties at build time so the SCA dependency pipeline (JarReader → DependencyResolver) detects com.datadoghq:dd-java-agent in the APP_DEPENDENCIES_LOADED telemetry events. Add a unit test in DependencyResolverSpecification verifying the resolver correctly parses the generated pom.properties, and extend the AbstractServerSmokeTest tracer-dependency assertion to include com.datadoghq:dd-java-agent so all server smoke tests validate this end-to-end against the real shadow JAR. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 517a89d commit f34cb20

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

dd-java-agent/build.gradle

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,18 @@ def generateAgentJarIndex = tasks.register('generateAgentJarIndex', JavaExec) {
324324
}
325325
sourceSets.main.resources.srcDir(generateAgentJarIndex)
326326

327+
def generatePomProperties = tasks.register('generatePomProperties') {
328+
def outputDir = project.layout.buildDirectory.dir("generated/maven-metadata")
329+
inputs.property("version", project.provider { project.version.toString() })
330+
outputs.dir(outputDir)
331+
doLast {
332+
def pomPropsFile = outputDir.get().file("META-INF/maven/com.datadoghq/dd-java-agent/pom.properties").asFile
333+
pomPropsFile.parentFile.mkdirs()
334+
pomPropsFile.text = "groupId=com.datadoghq\nartifactId=dd-java-agent\nversion=${project.version}\n"
335+
}
336+
}
337+
sourceSets.main.resources.srcDir(generatePomProperties)
338+
327339
subprojects { Project subProj ->
328340
// Don't need javadoc task run for internal projects.
329341
subProj.tasks.withType(Javadoc).configureEach { enabled = false }

dd-smoke-tests/src/main/groovy/datadog/smoketest/AbstractServerSmokeTest.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ abstract class AbstractServerSmokeTest extends AbstractSmokeTest {
183183

184184
and: 'received tracer dependencies'
185185
// Not exhaustive list of tracer dependencies.
186-
Set<String> missingDependencyNames = ['com.github.jnr:jnr-ffi', 'net.bytebuddy:byte-buddy-agent',].toSet()
186+
Set<String> missingDependencyNames = ['com.datadoghq:dd-java-agent', 'com.github.jnr:jnr-ffi', 'net.bytebuddy:byte-buddy-agent',].toSet()
187187
missingDependencyNames.removeAll(dependencyNames) || true
188188
missingDependencyNames.isEmpty()
189189

telemetry/src/test/groovy/datadog/telemetry/dependency/DependencyResolverSpecification.groovy

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,26 @@ class DependencyResolverSpecification extends DepSpecification {
9595
)
9696
}
9797

98+
void 'jar with dd-java-agent pom.properties resolves to com.datadoghq:dd-java-agent'() {
99+
given: 'a jar containing META-INF/maven/com.datadoghq/dd-java-agent/pom.properties'
100+
File file = new File(testDir, 'dd-java-agent.jar')
101+
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(file))
102+
ZipEntry e = new ZipEntry('META-INF/maven/com.datadoghq/dd-java-agent/pom.properties')
103+
out.putNextEntry(e)
104+
out.write('groupId=com.datadoghq\nartifactId=dd-java-agent\nversion=1.0.0\n'.getBytes('UTF-8'))
105+
out.closeEntry()
106+
out.close()
107+
108+
when:
109+
List<Dependency> deps = DependencyResolver.resolve(file.toURI())
110+
111+
then:
112+
deps.size() == 1
113+
deps[0].name == 'com.datadoghq:dd-java-agent'
114+
deps[0].version == '1.0.0'
115+
deps[0].hash == null
116+
}
117+
98118
void 'jar without manifest and no version in filename gets resolved'() {
99119
// If no manifest info and no suitable file name - calculate sha1 hash
100120
knownJarCheck(

0 commit comments

Comments
 (0)