diff --git a/src/main/java/de/hhu/stups/sablecc/gradle/SableCCPlugin.java b/src/main/java/de/hhu/stups/sablecc/gradle/SableCCPlugin.java index a874cc0a41b0d69e15a28ab827a1b6faa86cedf2..d009f1cec5e39a1dafcab7a8d28f5d61c7867888 100644 --- a/src/main/java/de/hhu/stups/sablecc/gradle/SableCCPlugin.java +++ b/src/main/java/de/hhu/stups/sablecc/gradle/SableCCPlugin.java @@ -5,7 +5,6 @@ import javax.inject.Inject; import org.gradle.api.NonNullApi; import org.gradle.api.Plugin; import org.gradle.api.Project; -import org.gradle.api.UnknownTaskException; import org.gradle.api.file.Directory; import org.gradle.api.internal.tasks.DefaultSourceSet; import org.gradle.api.plugins.JavaPlugin; @@ -63,11 +62,12 @@ public class SableCCPlugin implements Plugin<Project> { // Make compileJava, processResources, and sourcesJar depend on generateSableCCSource. project.getTasks().named(sourceSet.getCompileJavaTaskName(), task -> task.dependsOn(sableCCTaskName)); project.getTasks().named(sourceSet.getProcessResourcesTaskName(), task -> task.dependsOn(sableCCTaskName)); - try { - project.getTasks().named(sourceSet.getSourcesJarTaskName(), task -> task.dependsOn(sableCCTaskName)); - } catch (UnknownTaskException ignored) { - // No sourcesJar task defined, so no need to add a dependency. - } + // The sourcesJar task might not exist yet at this point, + // or the project might not use it at all, + // so we can't use .named(...) directly like for the other tasks + // and instead have to configure the task once it comes into existence (if at all). + // There's no nice way to do this right now - see https://github.com/gradle/gradle/issues/8057 + project.getTasks().matching(task -> task.getName().equals(sourceSet.getSourcesJarTaskName())).configureEach(task -> task.dependsOn(sableCCTaskName)); }); } }