Skip to content

Commit 046f8eb

Browse files
committed
chore: Refactor additional configurations to a ConfigurableFileCollection
1 parent 6261635 commit 046f8eb

File tree

3 files changed

+42
-34
lines changed

3 files changed

+42
-34
lines changed

buildSrc/src/main/kotlin/datadog/gradle/plugin/csi/CallSiteInstrumentationExtension.kt

Lines changed: 7 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,16 @@ package datadog.gradle.plugin.csi
22

33
import org.gradle.api.Project
44
import org.gradle.api.artifacts.Configuration
5+
import org.gradle.api.file.ConfigurableFileCollection
56
import org.gradle.api.file.DirectoryProperty
67
import org.gradle.api.file.ProjectLayout
78
import org.gradle.api.model.ObjectFactory
8-
import org.gradle.api.plugins.JavaPlugin.COMPILE_CLASSPATH_CONFIGURATION_NAME
9-
import org.gradle.api.plugins.JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME
109
import org.gradle.api.provider.ListProperty
1110
import org.gradle.api.provider.Property
12-
import org.gradle.api.tasks.SourceSet.TEST_SOURCE_SET_NAME
1311
import org.gradle.jvm.toolchain.JavaLanguageVersion
1412
import org.gradle.kotlin.dsl.listProperty
1513
import org.gradle.kotlin.dsl.property
1614
import java.io.File
17-
import java.util.Locale
1815
import javax.inject.Inject
1916

2017

@@ -77,35 +74,12 @@ abstract class CallSiteInstrumentationExtension @Inject constructor(
7774
objectFactory.listProperty<String>().convention(listOf("-Xmx128m", "-Xms64m"))
7875

7976
/**
80-
* The configurations to use to look for the call site instrumenter dependencies.
77+
* The paths used to look for the call site instrumenter dependencies.
8178
*
82-
* By default, includes all `main*` source sets, but only the `test`
83-
* (as wee don't want other test configurations by default).
79+
* The plugin includes by default **only** the `main` and `test` source sets, and their
80+
* related compilation classpath. As we don't want other test configurations by default.
81+
*
82+
* However, it's possible to contribute additional paths to look for dependencies.
8483
*/
85-
val configurations: ListProperty<Configuration> = objectFactory.listProperty<Configuration>().convention(
86-
project.provider {
87-
project.configurations.matching {
88-
// Includes all main* source sets, but only the test (as wee don;t want other )
89-
// * For main => runtimeClasspath, compileClasspath
90-
// * For test => testRuntimeClasspath, testCompileClasspath
91-
// * For other main* => "main_javaXXRuntimeClasspath", "main_javaXXCompileClasspath"
92-
93-
when (it.name) {
94-
// Regular main and test source sets
95-
RUNTIME_CLASSPATH_CONFIGURATION_NAME,
96-
COMPILE_CLASSPATH_CONFIGURATION_NAME,
97-
TEST_SOURCE_SET_NAME + RUNTIME_CLASSPATH_CONFIGURATION_NAME.capitalize(),
98-
TEST_SOURCE_SET_NAME + COMPILE_CLASSPATH_CONFIGURATION_NAME.capitalize() -> true
99-
100-
else -> false
101-
}
102-
}
103-
}
104-
)
105-
106-
private fun String.capitalize(): String = replaceFirstChar {
107-
if (it.isLowerCase()) it.titlecase(
108-
Locale.getDefault()
109-
) else it.toString()
110-
}
84+
val additionalPaths: ConfigurableFileCollection = objectFactory.fileCollection()
11185
}

buildSrc/src/main/kotlin/datadog/gradle/plugin/csi/CallSiteInstrumentationPlugin.kt

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,13 @@ package datadog.gradle.plugin.csi
22

33
import org.gradle.api.GradleException
44
import org.gradle.api.JavaVersion
5+
import org.gradle.api.NamedDomainObjectSet
56
import org.gradle.api.Plugin
67
import org.gradle.api.Project
8+
import org.gradle.api.artifacts.Configuration
79
import 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
812
import org.gradle.api.plugins.JavaPluginExtension
913
import org.gradle.api.tasks.JavaExec
1014
import org.gradle.api.tasks.SourceSet.MAIN_SOURCE_SET_NAME
@@ -25,6 +29,7 @@ import org.gradle.kotlin.dsl.withType
2529
import java.io.File
2630
import java.nio.file.Files
2731
import java.nio.file.Paths
32+
import java.util.Locale
2833
import javax.inject.Inject
2934

3035
private 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
}

dd-java-agent/instrumentation/scala/build.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,10 @@ final testTasks = scalaVersions.collect { scalaLibrary ->
6363
}
6464
}
6565

66+
csi {
67+
additionalPaths.from(classPathConfiguration)
68+
}
69+
6670
return tasks.register("test$version", Test) {
6771
classpath = classpath
6872
.filter { !it.toString().contains('scala-library') } // exclude default scala-library

0 commit comments

Comments
 (0)