diff --git a/testing/agent-for-testing/build.gradle.kts b/testing/agent-for-testing/build.gradle.kts index b83ada924e2a..142a1e04bc82 100644 --- a/testing/agent-for-testing/build.gradle.kts +++ b/testing/agent-for-testing/build.gradle.kts @@ -24,21 +24,37 @@ dependencies { testImplementation("io.opentelemetry:opentelemetry-api") } +abstract class ExtractJar : Copy() { + @get:InputFiles + abstract val jarFile: ConfigurableFileCollection + + @get:Inject + abstract val archiveOperations: ArchiveOperations + + init { + from(jarFile.elements.map { files -> files.map { archiveOperations.zipTree(it) } }) + } +} + tasks { + val extractAgent by registering(ExtractJar::class) { + jarFile.from(agent) + into(layout.buildDirectory.dir("extracted-agent")) + } + jar { - dependsOn(agent) - from(zipTree(agent.singleFile)) + from(extractAgent.map { it.outputs.files }) from(extensionLibs) { into("extensions") } - manifest.from( - providers.provider { - zipTree(agent.singleFile).matching { - include("META-INF/MANIFEST.MF") - }.singleFile - } - ) + val manifestFileProvider = extractAgent.flatMap { task -> + layout.buildDirectory.file("extracted-agent/META-INF/MANIFEST.MF") + } + + doFirst { + manifest.from(manifestFileProvider.get().asFile) + } } afterEvaluate {