1818
1919import java.lang.reflect.Modifier ;
2020import org.gradle.api.plugins.JavaBasePlugin ;
21+ import org.gradle.util.GradleVersion ;
22+
23+ final boolean TASK_AVOIDANCE_AVAILABLE = GradleVersion . current() >= GradleVersion . version(" 4.9" );
2124
2225project. plugins. apply(JavaBasePlugin . class);
2326
@@ -33,15 +36,19 @@ def extensionProps = CheckForbiddenApisExtension.class.declaredFields.findAll{ f
3336}* . name;
3437
3538// Create a convenience task for all checks (this does not conflict with extension, as it has higher priority in DSL):
36- def forbiddenTask = project. tasks. create(FORBIDDEN_APIS_TASK_NAME ) {
39+ def forbiddenTask = TASK_AVOIDANCE_AVAILABLE ? project. tasks. register(FORBIDDEN_APIS_TASK_NAME ) : project. tasks. create(FORBIDDEN_APIS_TASK_NAME )
40+ forbiddenTask. configure {
3741 description = " Runs forbidden-apis checks." ;
3842 group = JavaBasePlugin . VERIFICATION_GROUP ;
3943}
4044
4145// Define our tasks (one for each SourceSet):
4246project. sourceSets. all{ sourceSet ->
4347 def getSourceSetClassesDirs = { sourceSet. output. hasProperty(' classesDirs' ) ? sourceSet. output. classesDirs : project. files(sourceSet. output. classesDir) }
44- project. tasks. create(sourceSet. getTaskName(FORBIDDEN_APIS_TASK_NAME , null ), CheckForbiddenApis . class) { task ->
48+ String sourceSetTaskName = sourceSet. getTaskName(FORBIDDEN_APIS_TASK_NAME , null );
49+ def sourceSetTask = TASK_AVOIDANCE_AVAILABLE ? project. tasks. register(sourceSetTaskName, CheckForbiddenApis . class) :
50+ project. tasks. create(sourceSetTaskName, CheckForbiddenApis . class);
51+ sourceSetTask. configure { task ->
4552 description = " Runs forbidden-apis checks on '${ sourceSet.name} ' classes." ;
4653 conventionMapping. with{
4754 extensionProps. each{ key ->
@@ -61,9 +68,12 @@ project.sourceSets.all{ sourceSet ->
6168 }
6269 }
6370 outputs. upToDateWhen { true }
64- forbiddenTask. dependsOn(task);
71+ }
72+ forbiddenTask. configure {
73+ dependsOn(sourceSetTask)
6574 }
6675}
6776
6877// Add our task as dependency to chain
69- project. tasks[JavaBasePlugin . CHECK_TASK_NAME ]. dependsOn(forbiddenTask);
78+ def checkTask = TASK_AVOIDANCE_AVAILABLE ? project. tasks. named(JavaBasePlugin . CHECK_TASK_NAME ) : project. tasks. getByName(JavaBasePlugin . CHECK_TASK_NAME );
79+ checkTask. configure { it. dependsOn(forbiddenTask) };
0 commit comments