From c1a9726e8d1976783bcfd9030f0c81abfe686f9c Mon Sep 17 00:00:00 2001 From: Tyler Wong Date: Thu, 13 Jun 2024 19:29:54 -0700 Subject: [PATCH] Add ability to exclude source sets --- plugin/api/0.3.6-SNAPSHOT.txt | 2 ++ .../gradle/metalava/extension/MetalavaExtension.kt | 5 +++++ .../gradle/metalava/task/MetalavaCheckCompatibilityTask.kt | 7 ++++++- .../gradle/metalava/task/MetalavaGenerateSignatureTask.kt | 7 ++++++- 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/plugin/api/0.3.6-SNAPSHOT.txt b/plugin/api/0.3.6-SNAPSHOT.txt index 6578fcf..c52c66a 100644 --- a/plugin/api/0.3.6-SNAPSHOT.txt +++ b/plugin/api/0.3.6-SNAPSHOT.txt @@ -33,6 +33,7 @@ package me.tylerbwong.gradle.metalava.extension { method public final org.gradle.api.provider.Property getApiType(); method public final org.gradle.api.provider.SetProperty getArguments(); method public final org.gradle.api.provider.Property getEnforceCheck(); + method public final org.gradle.api.file.ConfigurableFileCollection getExcludedSourceSets(); method public final org.gradle.api.provider.Property getFilename(); method public final org.gradle.api.provider.Property getFormat(); method public final org.gradle.api.provider.SetProperty getHiddenAnnotations(); @@ -49,6 +50,7 @@ package me.tylerbwong.gradle.metalava.extension { property public final org.gradle.api.provider.Property apiType; property public final org.gradle.api.provider.SetProperty arguments; property public final org.gradle.api.provider.Property enforceCheck; + property public final org.gradle.api.file.ConfigurableFileCollection excludedSourceSets; property public final org.gradle.api.provider.Property filename; property public final org.gradle.api.provider.Property format; property public final org.gradle.api.provider.SetProperty hiddenAnnotations; diff --git a/plugin/src/main/kotlin/me/tylerbwong/gradle/metalava/extension/MetalavaExtension.kt b/plugin/src/main/kotlin/me/tylerbwong/gradle/metalava/extension/MetalavaExtension.kt index bc01cd1..0ed79f2 100644 --- a/plugin/src/main/kotlin/me/tylerbwong/gradle/metalava/extension/MetalavaExtension.kt +++ b/plugin/src/main/kotlin/me/tylerbwong/gradle/metalava/extension/MetalavaExtension.kt @@ -87,6 +87,11 @@ open class MetalavaExtension @Inject constructor( */ val additionalSourceSets: ConfigurableFileCollection = objectFactory.fileCollection() + /** + * Source directories to exclude. + */ + val excludedSourceSets: ConfigurableFileCollection = objectFactory.fileCollection() + /** * If the tasks should run as part of Gradle's `check` task. The default is true. */ diff --git a/plugin/src/main/kotlin/me/tylerbwong/gradle/metalava/task/MetalavaCheckCompatibilityTask.kt b/plugin/src/main/kotlin/me/tylerbwong/gradle/metalava/task/MetalavaCheckCompatibilityTask.kt index 9ddfc50..4a2aa22 100644 --- a/plugin/src/main/kotlin/me/tylerbwong/gradle/metalava/task/MetalavaCheckCompatibilityTask.kt +++ b/plugin/src/main/kotlin/me/tylerbwong/gradle/metalava/task/MetalavaCheckCompatibilityTask.kt @@ -82,7 +82,12 @@ internal abstract class MetalavaCheckCompatibilityTask @Inject constructor( return project.tasks.register(taskName) { this.metalavaClasspath.from(metalavaClasspath) tempFilename.set(tempFilenameProvider) - sourceSets.setFrom(module.sourceSets(project, variantName) + extension.additionalSourceSets) + sourceSets.setFrom( + module.sourceSets( + project, + variantName, + ) + extension.additionalSourceSets - extension.excludedSourceSets, + ) filename.set(extension.filename) shouldRunGenerateSignature.set(false) bootClasspath.from(bootClasspathProvider) diff --git a/plugin/src/main/kotlin/me/tylerbwong/gradle/metalava/task/MetalavaGenerateSignatureTask.kt b/plugin/src/main/kotlin/me/tylerbwong/gradle/metalava/task/MetalavaGenerateSignatureTask.kt index d7ebb72..ad8e569 100644 --- a/plugin/src/main/kotlin/me/tylerbwong/gradle/metalava/task/MetalavaGenerateSignatureTask.kt +++ b/plugin/src/main/kotlin/me/tylerbwong/gradle/metalava/task/MetalavaGenerateSignatureTask.kt @@ -109,7 +109,12 @@ internal abstract class MetalavaGenerateSignatureTask @Inject constructor( val bootClasspathProvider = project.provider { module.bootClasspath } return project.tasks.register(taskName) { this.metalavaClasspath.from(metalavaClasspath) - sourceSets.from(module.sourceSets(project, variantName) + extension.additionalSourceSets) + sourceSets.from( + module.sourceSets( + project, + variantName, + ) + extension.additionalSourceSets - extension.excludedSourceSets, + ) filename.set(extension.filename) shouldRunGenerateSignature.set(true) bootClasspath.from(bootClasspathProvider)