File tree Expand file tree Collapse file tree
buildSrc/src/main/kotlin/datadog/gradle/plugin/instrument Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11package datadog.gradle.plugin.instrument
22
3+ import org.gradle.api.file.ConfigurableFileCollection
34import org.gradle.api.file.DirectoryProperty
45import org.gradle.api.provider.ListProperty
56
@@ -23,4 +24,9 @@ abstract class BuildTimeInstrumentationExtension {
2324 * Additional classpath entries required to resolve instrumentation plugins and their dependencies.
2425 */
2526 abstract val additionalClasspath: ListProperty <DirectoryProperty >
27+
28+ /* *
29+ * Additional class directories to include in instrumentation processing.
30+ */
31+ abstract val includeClassDirectories: ConfigurableFileCollection
2632}
Original file line number Diff line number Diff line change @@ -130,6 +130,7 @@ class BuildTimeInstrumentationPlugin : Plugin<Project> {
130130 inputs.property(" javaVersion" , resolvedJavaVersion)
131131 inputs.property(" plugins" , extension.plugins)
132132 inputs.files(extension.additionalClasspath)
133+ inputs.files(extension.includeClassDirectories)
133134
134135 // Temporary location for raw (un-instrumented) classes.
135136 val tmpUninstrumentedClasses = project.objects.directoryProperty().value(
@@ -154,6 +155,7 @@ class BuildTimeInstrumentationPlugin : Plugin<Project> {
154155 instrumentingClassPath,
155156 destinationDirectory,
156157 tmpUninstrumentedClasses,
158+ extension.includeClassDirectories,
157159 )
158160 )
159161
Original file line number Diff line number Diff line change @@ -44,6 +44,15 @@ abstract class InstrumentAction : WorkAction<InstrumentWorkParameters> {
4444 from(originalClassesDirectory)
4545 into(tmpUninstrumentedDir)
4646 }
47+ // Merge any additional class directories (e.g. unpacked dependency JARs) to be processed
48+ parameters.includeClassDirectories.files.forEach { classesDir ->
49+ if (classesDir.exists()) {
50+ fileSystemOperations.copy {
51+ from(classesDir)
52+ into(tmpUninstrumentedDir)
53+ }
54+ }
55+ }
4756 fileSystemOperations.delete {
4857 delete(objects.fileTree().from(originalClassesDirectory))
4958 }
Original file line number Diff line number Diff line change @@ -21,7 +21,8 @@ abstract class InstrumentPostProcessingAction @Inject constructor(
2121 val plugins : ListProperty <String >,
2222 val instrumentingClassPath : FileCollection ,
2323 val compilerOutputDirectory : DirectoryProperty ,
24- val tmpDirectory : DirectoryProperty
24+ val tmpDirectory : DirectoryProperty ,
25+ val includeClassDirectories : FileCollection
2526) : Action<Task> {
2627 private val logger = Logging .getLogger(InstrumentPostProcessingAction ::class .java)
2728 private val resolvedJavaVersion: JavaLanguageVersion = when (javaVersion) {
@@ -61,6 +62,7 @@ abstract class InstrumentPostProcessingAction @Inject constructor(
6162 instrumentingClassPath.setFrom(action.instrumentingClassPath)
6263 compilerOutputDirectory.set(action.compilerOutputDirectory)
6364 tmpDirectory.set(action.tmpDirectory)
65+ includeClassDirectories.setFrom(action.includeClassDirectories)
6466 }
6567 }
6668
Original file line number Diff line number Diff line change @@ -13,4 +13,5 @@ interface InstrumentWorkParameters : WorkParameters {
1313 val instrumentingClassPath: ConfigurableFileCollection
1414 val compilerOutputDirectory: DirectoryProperty
1515 val tmpDirectory: DirectoryProperty
16+ val includeClassDirectories: ConfigurableFileCollection
1617}
You can’t perform that action at this time.
0 commit comments