Browse Source

Allow different source sets from forbiddenApis (#54731)

ForbiddenApis task via the precommit task currently makes an assumption
that only the test and main source sets are present for any given project.
This commit removes that assumption and allows for any project source set's
compileClasspath class path to be added to the forbiddenApis classpath
configuration.
Jake Landis 5 years ago
parent
commit
13d1683bec

+ 14 - 11
buildSrc/src/main/groovy/org/elasticsearch/gradle/precommit/PrecommitTasks.groovy

@@ -18,7 +18,6 @@
  */
 package org.elasticsearch.gradle.precommit
 
-
 import de.thetaphi.forbiddenapis.gradle.CheckForbiddenApis
 import de.thetaphi.forbiddenapis.gradle.ForbiddenApisPlugin
 import org.elasticsearch.gradle.ExportElasticsearchBuildResourcesTask
@@ -31,6 +30,7 @@ import org.gradle.api.artifacts.Configuration
 import org.gradle.api.file.FileCollection
 import org.gradle.api.plugins.JavaBasePlugin
 import org.gradle.api.plugins.quality.Checkstyle
+import org.gradle.api.tasks.SourceSet
 import org.gradle.api.tasks.TaskProvider
 
 /**
@@ -144,18 +144,21 @@ class PrecommitTasks {
         project.tasks.withType(CheckForbiddenApis).configureEach {
             dependsOn(buildResources)
 
-            //  use the runtime classpath if we have it, but some qa projects don't have one...
-            if (name.endsWith('Test')) {
-                FileCollection runtime = project.sourceSets.test.runtimeClasspath
-                if (runtime != null) {
-                    classpath = runtime.plus(project.sourceSets.test.compileClasspath)
-                }
+            assert name.startsWith(ForbiddenApisPlugin.FORBIDDEN_APIS_TASK_NAME)
+            String sourceSetName
+            if (ForbiddenApisPlugin.FORBIDDEN_APIS_TASK_NAME.equals(name)) {
+                sourceSetName = "main"
             } else {
-                FileCollection runtime = project.sourceSets.main.runtimeClasspath
-                if (runtime != null) {
-                    classpath = runtime.plus(project.sourceSets.main.compileClasspath)
-                }
+                //parse out the sourceSetName
+                char[] chars = name.substring(ForbiddenApisPlugin.FORBIDDEN_APIS_TASK_NAME.length()).toCharArray()
+                chars[0] = Character.toLowerCase(chars[0])
+                sourceSetName = new String(chars)
             }
+
+            SourceSet sourceSet = project.sourceSets.getByName(sourceSetName)
+            FileCollection runtime = sourceSet.runtimeClasspath
+            classpath = runtime.plus(sourceSet.compileClasspath)
+
             targetCompatibility = BuildParams.runtimeJavaVersion.majorVersion
             if (BuildParams.runtimeJavaVersion > JavaVersion.VERSION_13) {
                 project.logger.warn(

+ 0 - 2
distribution/archives/darwin-tar/build.gradle

@@ -1,2 +0,0 @@
-// This file is intentionally blank. All configuration of the
-// distribution is done in the parent project.