Skip to content

Commit 32a0a86

Browse files
committed
Make sure compileJava and compileKotlin run after
compileQuarkusGeneratedSourcesXXX tasks
1 parent ef0f9e2 commit 32a0a86

File tree

8 files changed

+61
-20
lines changed

8 files changed

+61
-20
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package io.quarkus.gradle;
2+
3+
import java.util.Objects;
4+
5+
import org.gradle.api.Named;
6+
7+
class NamedImpl implements Named {
8+
9+
private final String name;
10+
11+
public NamedImpl(String name) {
12+
this.name = Objects.requireNonNull(name);
13+
}
14+
15+
@Override
16+
public String getName() {
17+
return name;
18+
}
19+
}

devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/QuarkusPlugin.java

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -471,39 +471,61 @@ public boolean isSatisfiedBy(Task t) {
471471

472472
tasks.named(JavaPlugin.COMPILE_JAVA_TASK_NAME, JavaCompile.class,
473473
compileJava -> {
474+
// add the code gen sources
475+
final SourceSet generatedSourceSet = sourceSets
476+
.getByName(QuarkusGenerateCode.QUARKUS_GENERATED_SOURCES);
477+
addCodeGenSourceDirs(compileJava, generatedSourceSet, quarkusExt);
474478
// quarkusGenerateCode is a dependency
475479
compileJava.dependsOn(quarkusGenerateCode);
476480
// quarkusGenerateCodeDev must run before compileJava in case quarkusDev is the target
477481
compileJava.mustRunAfter(quarkusGenerateCodeDev);
478-
// add the code gen sources
479-
addCodeGenSourceDirs(compileJava,
480-
sourceSets.getByName(QuarkusGenerateCode.QUARKUS_GENERATED_SOURCES), quarkusExt);
482+
483+
// The code below needs to be reviewed. There is no test coverage for it.
484+
// We need to properly configure/use these tasks. For now they aren't actually used
485+
// but w/o the code below, in some cases, Gradle may fail on determining task ordering.
486+
// Similar code is added for compileKotlin (although for Kotlin these task don't seem to exist).
487+
if (tasks.contains(new NamedImpl(generatedSourceSet.getCompileJavaTaskName()))) {
488+
compileJava.mustRunAfter(tasks.named(generatedSourceSet.getCompileJavaTaskName()));
489+
}
481490
});
482491
tasks.named(JavaPlugin.COMPILE_TEST_JAVA_TASK_NAME, JavaCompile.class,
483492
compileTestJava -> {
484-
compileTestJava.dependsOn(quarkusGenerateCode);
485-
compileTestJava.dependsOn(quarkusGenerateCodeTests);
493+
// add the code gen test sources
494+
final SourceSet generatedSourceSet = sourceSets
495+
.getByName(QuarkusGenerateCode.QUARKUS_TEST_GENERATED_SOURCES);
496+
addCodeGenSourceDirs(compileTestJava, generatedSourceSet, quarkusExt);
497+
compileTestJava.dependsOn(quarkusGenerateCode, quarkusGenerateCodeTests);
498+
if (tasks.contains(new NamedImpl(generatedSourceSet.getCompileJavaTaskName()))) {
499+
compileTestJava.mustRunAfter(tasks.named(generatedSourceSet.getCompileJavaTaskName()));
500+
}
486501
if (project.getGradle().getStartParameter().getTaskNames().contains(QUARKUS_DEV_TASK_NAME)) {
487502
compileTestJava.getOptions().setFailOnError(false);
488503
}
489-
// add the code gen test sources
490-
addCodeGenSourceDirs(compileTestJava,
491-
sourceSets.getByName(QuarkusGenerateCode.QUARKUS_TEST_GENERATED_SOURCES), quarkusExt);
492504
});
493505
});
494506

495507
project.getPlugins().withId("org.jetbrains.kotlin.jvm", plugin -> {
496508
quarkusDev.configure(task -> task.shouldPropagateJavaCompilerArgs(false));
497509
tasks.named("compileKotlin", task -> {
498-
task.mustRunAfter(quarkusGenerateCode);
510+
final SourceSet generatedSourceSet = project.getExtensions().getByType(SourceSetContainer.class)
511+
.getByName(QuarkusGenerateCode.QUARKUS_GENERATED_SOURCES);
512+
addCodeGenSourceDirs(task, generatedSourceSet, quarkusExt);
513+
task.dependsOn(quarkusGenerateCode);
499514
task.mustRunAfter(quarkusGenerateCodeDev);
500-
addCodeGenSourceDirs(task, project.getExtensions().getByType(SourceSetContainer.class)
501-
.getByName(QuarkusGenerateCode.QUARKUS_GENERATED_SOURCES), quarkusExt);
515+
String generatedSourcesCompileTaskName = generatedSourceSet.getCompileTaskName("kotlin");
516+
if (tasks.contains(new NamedImpl(generatedSourcesCompileTaskName))) {
517+
task.mustRunAfter(tasks.named(generatedSourcesCompileTaskName));
518+
}
502519
});
503520
tasks.named("compileTestKotlin", task -> {
521+
final SourceSet generatedSourceSet = project.getExtensions().getByType(SourceSetContainer.class)
522+
.getByName(QuarkusGenerateCode.QUARKUS_TEST_GENERATED_SOURCES);
523+
addCodeGenSourceDirs(task, generatedSourceSet, quarkusExt);
504524
task.dependsOn(quarkusGenerateCodeTests);
505-
addCodeGenSourceDirs(task, project.getExtensions().getByType(SourceSetContainer.class)
506-
.getByName(QuarkusGenerateCode.QUARKUS_TEST_GENERATED_SOURCES), quarkusExt);
525+
final String generatedSourcesCompileTaskName = generatedSourceSet.getCompileTaskName("kotlin");
526+
if (tasks.contains(new NamedImpl(generatedSourcesCompileTaskName))) {
527+
task.mustRunAfter(tasks.named(generatedSourcesCompileTaskName));
528+
}
507529
});
508530
});
509531
}

devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusGradleUtils.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ public static String getClassesDir(SourceSet sourceSet, File tmpDir, boolean pop
4646
}
4747

4848
public static Path mergeClassesDirs(Collection<Path> classesDirs, File tmpDir, boolean populated, boolean test) {
49-
List<Path> existingClassesDirs = classesDirs.stream().filter(p -> Files.exists(p)).toList();
49+
List<Path> existingClassesDirs = classesDirs.stream().filter(Files::exists).toList();
5050

51-
if (existingClassesDirs.size() == 0) {
51+
if (existingClassesDirs.isEmpty()) {
5252
return null;
5353
}
5454

integration-tests/gradle/src/main/resources/grpc-descriptor-set-alternate-output-dir/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ repositories {
1616

1717
dependencies {
1818
implementation enforcedPlatform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}")
19-
implementation 'io.quarkus:quarkus-resteasy'
19+
implementation 'io.quarkus:quarkus-rest'
2020
implementation 'io.quarkus:quarkus-grpc'
2121
}
2222

integration-tests/gradle/src/main/resources/grpc-descriptor-set-alternate-output/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ repositories {
1616

1717
dependencies {
1818
implementation enforcedPlatform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}")
19-
implementation 'io.quarkus:quarkus-resteasy'
19+
implementation 'io.quarkus:quarkus-rest'
2020
implementation 'io.quarkus:quarkus-grpc'
2121
}
2222

integration-tests/gradle/src/main/resources/grpc-descriptor-set/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ repositories {
1616

1717
dependencies {
1818
implementation enforcedPlatform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}")
19-
implementation 'io.quarkus:quarkus-resteasy'
19+
implementation 'io.quarkus:quarkus-rest'
2020
implementation 'io.quarkus:quarkus-grpc'
2121
}
2222

integration-tests/gradle/src/main/resources/grpc-include-project/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ repositories {
1616

1717
dependencies {
1818
implementation enforcedPlatform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}")
19-
implementation 'io.quarkus:quarkus-resteasy'
19+
implementation 'io.quarkus:quarkus-rest'
2020
implementation 'io.quarkus:quarkus-grpc'
2121
}
2222

integration-tests/gradle/src/main/resources/grpc-multi-module-project/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ subprojects {
4040

4141
dependencies {
4242

43-
implementation 'io.quarkus:quarkus-resteasy'
43+
implementation 'io.quarkus:quarkus-rest'
4444

4545
testImplementation 'io.quarkus:quarkus-junit5'
4646

0 commit comments

Comments
 (0)