@@ -36,6 +36,10 @@ dependencies {
3636shadowJar {
3737 configurations = [project. configurations. runtimeClasspath, project. configurations. testInstrumentation]
3838 mergeServiceFiles()
39+ // mergeServiceFiles requires that duplicate strategy is set to include
40+ filesMatching(" inst/META-INF/services/**" ) {
41+ duplicatesStrategy = DuplicatesStrategy . INCLUDE
42+ }
3943
4044 archiveFileName = ' agent-testing.jar'
4145
@@ -46,13 +50,16 @@ tasks.withType(Test).configureEach {
4650 inputs. file(shadowJar. archiveFile)
4751
4852 jvmArgs " -Dotel.javaagent.debug=true"
49- jvmArgs " -javaagent:${ configurations.testAgent.files.first().absolutePath} "
5053 jvmArgs " -Dotel.javaagent.experimental.initializer.jar=${ shadowJar.archiveFile.get().asFile.absolutePath} "
5154 jvmArgs " -Dotel.javaagent.testing.additional-library-ignores.enabled=false"
5255 jvmArgs " -Dotel.javaagent.testing.fail-on-context-leak=true"
5356 // prevent sporadic gradle deadlocks, see SafeLogger for more details
5457 jvmArgs " -Dotel.javaagent.testing.transform-safe-logging.enabled=true"
5558
59+ jvmArgumentProviders. add(new JavaagentProvider (project. providers. provider {
60+ configurations. testAgent. files. first()
61+ }))
62+
5663 dependsOn shadowJar
5764 dependsOn configurations. testAgent. buildDependencies
5865
@@ -65,3 +72,18 @@ tasks.withType(Test).configureEach {
6572 return true
6673 }
6774}
75+
76+ class JavaagentProvider implements CommandLineArgumentProvider {
77+ @InputFile
78+ @PathSensitive (PathSensitivity .RELATIVE )
79+ Provider<File > agentJar
80+
81+ JavaagentProvider (Provider<File > agentJar ) {
82+ this . agentJar = agentJar
83+ }
84+
85+ @Override
86+ Iterable<String > asArguments () {
87+ return [" -javaagent:${ agentJar.get().absolutePath} " ]
88+ }
89+ }
0 commit comments