Skip to content

Commit 6492f77

Browse files
authored
Merge pull request #49864 from aloubyansky/generated-sources-compile-tasks
Make sure compileJava and compileKotlin run after compileQuarkusGeneratedSourcesXXX tasks
2 parents 0d554f2 + 01dfacb commit 6492f77

File tree

8 files changed

+69
-20
lines changed

8 files changed

+69
-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: 43 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -471,39 +471,69 @@ 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+
// https://github.com/quarkusio/quarkus/issues/45057 states that this issue happens with
487+
// org.gradle.parallel=true when building from IntelliJ
488+
// Similar code is added for compileKotlin (although for Kotlin these task don't seem to exist).
489+
if (tasks.contains(new NamedImpl(generatedSourceSet.getCompileJavaTaskName()))) {
490+
compileJava.mustRunAfter(tasks.named(generatedSourceSet.getCompileJavaTaskName()));
491+
}
481492
});
482493
tasks.named(JavaPlugin.COMPILE_TEST_JAVA_TASK_NAME, JavaCompile.class,
483494
compileTestJava -> {
484-
compileTestJava.dependsOn(quarkusGenerateCode);
485-
compileTestJava.dependsOn(quarkusGenerateCodeTests);
495+
// add the code gen test sources
496+
final SourceSet generatedSourceSet = sourceSets
497+
.getByName(QuarkusGenerateCode.QUARKUS_TEST_GENERATED_SOURCES);
498+
addCodeGenSourceDirs(compileTestJava, generatedSourceSet, quarkusExt);
499+
compileTestJava.dependsOn(quarkusGenerateCode, quarkusGenerateCodeTests);
500+
if (tasks.contains(new NamedImpl(generatedSourceSet.getCompileJavaTaskName()))) {
501+
compileTestJava.mustRunAfter(tasks.named(generatedSourceSet.getCompileJavaTaskName()));
502+
}
486503
if (project.getGradle().getStartParameter().getTaskNames().contains(QUARKUS_DEV_TASK_NAME)) {
487504
compileTestJava.getOptions().setFailOnError(false);
488505
}
489-
// add the code gen test sources
490-
addCodeGenSourceDirs(compileTestJava,
491-
sourceSets.getByName(QuarkusGenerateCode.QUARKUS_TEST_GENERATED_SOURCES), quarkusExt);
492506
});
493507
});
494508

495509
project.getPlugins().withId("org.jetbrains.kotlin.jvm", plugin -> {
496510
quarkusDev.configure(task -> task.shouldPropagateJavaCompilerArgs(false));
497511
tasks.named("compileKotlin", task -> {
498-
task.mustRunAfter(quarkusGenerateCode);
512+
final SourceSet generatedSourceSet = project.getExtensions().getByType(SourceSetContainer.class)
513+
.getByName(QuarkusGenerateCode.QUARKUS_GENERATED_SOURCES);
514+
addCodeGenSourceDirs(task, generatedSourceSet, quarkusExt);
515+
task.dependsOn(quarkusGenerateCode);
499516
task.mustRunAfter(quarkusGenerateCodeDev);
500-
addCodeGenSourceDirs(task, project.getExtensions().getByType(SourceSetContainer.class)
501-
.getByName(QuarkusGenerateCode.QUARKUS_GENERATED_SOURCES), quarkusExt);
517+
if (tasks.contains(new NamedImpl(generatedSourceSet.getCompileJavaTaskName()))) {
518+
task.mustRunAfter(tasks.named(generatedSourceSet.getCompileJavaTaskName()));
519+
}
520+
String generatedSourcesCompileTaskName = generatedSourceSet.getCompileTaskName("kotlin");
521+
if (tasks.contains(new NamedImpl(generatedSourcesCompileTaskName))) {
522+
task.mustRunAfter(tasks.named(generatedSourcesCompileTaskName));
523+
}
502524
});
503525
tasks.named("compileTestKotlin", task -> {
526+
final SourceSet generatedSourceSet = project.getExtensions().getByType(SourceSetContainer.class)
527+
.getByName(QuarkusGenerateCode.QUARKUS_TEST_GENERATED_SOURCES);
528+
addCodeGenSourceDirs(task, generatedSourceSet, quarkusExt);
504529
task.dependsOn(quarkusGenerateCodeTests);
505-
addCodeGenSourceDirs(task, project.getExtensions().getByType(SourceSetContainer.class)
506-
.getByName(QuarkusGenerateCode.QUARKUS_TEST_GENERATED_SOURCES), quarkusExt);
530+
if (tasks.contains(new NamedImpl(generatedSourceSet.getCompileJavaTaskName()))) {
531+
task.mustRunAfter(tasks.named(generatedSourceSet.getCompileJavaTaskName()));
532+
}
533+
final String generatedSourcesCompileTaskName = generatedSourceSet.getCompileTaskName("kotlin");
534+
if (tasks.contains(new NamedImpl(generatedSourcesCompileTaskName))) {
535+
task.mustRunAfter(tasks.named(generatedSourcesCompileTaskName));
536+
}
507537
});
508538
});
509539
}

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)