@@ -2,9 +2,13 @@ package datadog.gradle.plugin.csi
22
33import org.gradle.api.GradleException
44import org.gradle.api.JavaVersion
5+ import org.gradle.api.NamedDomainObjectSet
56import org.gradle.api.Plugin
67import org.gradle.api.Project
8+ import org.gradle.api.artifacts.Configuration
79import org.gradle.api.plugins.JavaPlugin
10+ import org.gradle.api.plugins.JavaPlugin.COMPILE_CLASSPATH_CONFIGURATION_NAME
11+ import org.gradle.api.plugins.JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME
812import org.gradle.api.plugins.JavaPluginExtension
913import org.gradle.api.tasks.JavaExec
1014import org.gradle.api.tasks.SourceSet.MAIN_SOURCE_SET_NAME
@@ -25,6 +29,7 @@ import org.gradle.kotlin.dsl.withType
2529import java.io.File
2630import java.nio.file.Files
2731import java.nio.file.Paths
32+ import java.util.Locale
2833import javax.inject.Inject
2934
3035private const val CALL_SITE_INSTRUMENTER_MAIN_CLASS = " datadog.trace.plugin.csi.PluginApplication"
@@ -159,7 +164,8 @@ abstract class CallSiteInstrumentationPlugin : Plugin<Project>{
159164 val callsitesClassPath = project.objects.fileCollection()
160165 .from(
161166 project.sourceSets.named(MAIN_SOURCE_SET_NAME ).map { it.output },
162- csiExtension.configurations
167+ project.defaultConfigurations,
168+ csiExtension.additionalPaths
163169 )
164170
165171 if (project.logger.isInfoEnabled) {
@@ -209,6 +215,30 @@ abstract class CallSiteInstrumentationPlugin : Plugin<Project>{
209215 }
210216 }
211217
218+ private val Project .defaultConfigurations: NamedDomainObjectSet <Configuration >
219+ get() = project.configurations.matching {
220+ // Includes all main* source sets, but only the test (as wee don;t want other )
221+ // * For main => runtimeClasspath, compileClasspath
222+ // * For test => testRuntimeClasspath, testCompileClasspath
223+ // * For other main* => "main_javaXXRuntimeClasspath", "main_javaXXCompileClasspath"
224+
225+ when (it.name) {
226+ // Regular main and test source sets
227+ RUNTIME_CLASSPATH_CONFIGURATION_NAME ,
228+ COMPILE_CLASSPATH_CONFIGURATION_NAME ,
229+ TEST_SOURCE_SET_NAME + RUNTIME_CLASSPATH_CONFIGURATION_NAME .capitalize(),
230+ TEST_SOURCE_SET_NAME + COMPILE_CLASSPATH_CONFIGURATION_NAME .capitalize() -> true
231+
232+ else -> false
233+ }
234+ }
235+
236+ private fun String.capitalize (): String = replaceFirstChar {
237+ if (it.isLowerCase()) it.titlecase(
238+ Locale .getDefault()
239+ ) else it.toString()
240+ }
241+
212242 private val Project .sourceSets: SourceSetContainer
213243 get() = project.extensions.getByType<JavaPluginExtension >().sourceSets
214244}
0 commit comments