Skip to content

Commit 261ff53

Browse files
authored
Merge pull request #162 from rjernst/task_avoidance
Use task configuration avoidance in gradle initialization
2 parents 0ba6767 + 9d5d198 commit 261ff53

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

src/main/resources/de/thetaphi/forbiddenapis/gradle/plugin-init.groovy

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818

1919
import java.lang.reflect.Modifier;
2020
import 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

2225
project.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):
4246
project.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

Comments
 (0)