Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package io.quarkus.gradle;

import java.util.Objects;

import org.gradle.api.Named;

class NamedImpl implements Named {

private final String name;

public NamedImpl(String name) {
this.name = Objects.requireNonNull(name);
}

@Override
public String getName() {
return name;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -471,39 +471,69 @@ public boolean isSatisfiedBy(Task t) {

tasks.named(JavaPlugin.COMPILE_JAVA_TASK_NAME, JavaCompile.class,
compileJava -> {
// add the code gen sources
final SourceSet generatedSourceSet = sourceSets
.getByName(QuarkusGenerateCode.QUARKUS_GENERATED_SOURCES);
addCodeGenSourceDirs(compileJava, generatedSourceSet, quarkusExt);
// quarkusGenerateCode is a dependency
compileJava.dependsOn(quarkusGenerateCode);
// quarkusGenerateCodeDev must run before compileJava in case quarkusDev is the target
compileJava.mustRunAfter(quarkusGenerateCodeDev);
// add the code gen sources
addCodeGenSourceDirs(compileJava,
sourceSets.getByName(QuarkusGenerateCode.QUARKUS_GENERATED_SOURCES), quarkusExt);

// The code below needs to be reviewed. There is no test coverage for it.
// We need to properly configure/use these tasks. For now they aren't actually used
// but w/o the code below, in some cases, Gradle may fail on determining task ordering.
// https://github.com/quarkusio/quarkus/issues/45057 states that this issue happens with
// org.gradle.parallel=true when building from IntelliJ
// Similar code is added for compileKotlin (although for Kotlin these task don't seem to exist).
if (tasks.contains(new NamedImpl(generatedSourceSet.getCompileJavaTaskName()))) {
compileJava.mustRunAfter(tasks.named(generatedSourceSet.getCompileJavaTaskName()));
}
});
tasks.named(JavaPlugin.COMPILE_TEST_JAVA_TASK_NAME, JavaCompile.class,
compileTestJava -> {
compileTestJava.dependsOn(quarkusGenerateCode);
compileTestJava.dependsOn(quarkusGenerateCodeTests);
// add the code gen test sources
final SourceSet generatedSourceSet = sourceSets
.getByName(QuarkusGenerateCode.QUARKUS_TEST_GENERATED_SOURCES);
addCodeGenSourceDirs(compileTestJava, generatedSourceSet, quarkusExt);
compileTestJava.dependsOn(quarkusGenerateCode, quarkusGenerateCodeTests);
if (tasks.contains(new NamedImpl(generatedSourceSet.getCompileJavaTaskName()))) {
compileTestJava.mustRunAfter(tasks.named(generatedSourceSet.getCompileJavaTaskName()));
}
if (project.getGradle().getStartParameter().getTaskNames().contains(QUARKUS_DEV_TASK_NAME)) {
compileTestJava.getOptions().setFailOnError(false);
}
// add the code gen test sources
addCodeGenSourceDirs(compileTestJava,
sourceSets.getByName(QuarkusGenerateCode.QUARKUS_TEST_GENERATED_SOURCES), quarkusExt);
});
});

project.getPlugins().withId("org.jetbrains.kotlin.jvm", plugin -> {
quarkusDev.configure(task -> task.shouldPropagateJavaCompilerArgs(false));
tasks.named("compileKotlin", task -> {
task.mustRunAfter(quarkusGenerateCode);
final SourceSet generatedSourceSet = project.getExtensions().getByType(SourceSetContainer.class)
.getByName(QuarkusGenerateCode.QUARKUS_GENERATED_SOURCES);
addCodeGenSourceDirs(task, generatedSourceSet, quarkusExt);
task.dependsOn(quarkusGenerateCode);
task.mustRunAfter(quarkusGenerateCodeDev);
addCodeGenSourceDirs(task, project.getExtensions().getByType(SourceSetContainer.class)
.getByName(QuarkusGenerateCode.QUARKUS_GENERATED_SOURCES), quarkusExt);
if (tasks.contains(new NamedImpl(generatedSourceSet.getCompileJavaTaskName()))) {
task.mustRunAfter(tasks.named(generatedSourceSet.getCompileJavaTaskName()));
}
String generatedSourcesCompileTaskName = generatedSourceSet.getCompileTaskName("kotlin");
if (tasks.contains(new NamedImpl(generatedSourcesCompileTaskName))) {
task.mustRunAfter(tasks.named(generatedSourcesCompileTaskName));
}
});
tasks.named("compileTestKotlin", task -> {
final SourceSet generatedSourceSet = project.getExtensions().getByType(SourceSetContainer.class)
.getByName(QuarkusGenerateCode.QUARKUS_TEST_GENERATED_SOURCES);
addCodeGenSourceDirs(task, generatedSourceSet, quarkusExt);
task.dependsOn(quarkusGenerateCodeTests);
addCodeGenSourceDirs(task, project.getExtensions().getByType(SourceSetContainer.class)
.getByName(QuarkusGenerateCode.QUARKUS_TEST_GENERATED_SOURCES), quarkusExt);
if (tasks.contains(new NamedImpl(generatedSourceSet.getCompileJavaTaskName()))) {
task.mustRunAfter(tasks.named(generatedSourceSet.getCompileJavaTaskName()));
}
final String generatedSourcesCompileTaskName = generatedSourceSet.getCompileTaskName("kotlin");
if (tasks.contains(new NamedImpl(generatedSourcesCompileTaskName))) {
task.mustRunAfter(tasks.named(generatedSourcesCompileTaskName));
}
});
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@ public static String getClassesDir(SourceSet sourceSet, File tmpDir, boolean pop
}

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

if (existingClassesDirs.size() == 0) {
if (existingClassesDirs.isEmpty()) {
return null;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ repositories {

dependencies {
implementation enforcedPlatform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}")
implementation 'io.quarkus:quarkus-resteasy'
implementation 'io.quarkus:quarkus-rest'
implementation 'io.quarkus:quarkus-grpc'
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ repositories {

dependencies {
implementation enforcedPlatform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}")
implementation 'io.quarkus:quarkus-resteasy'
implementation 'io.quarkus:quarkus-rest'
implementation 'io.quarkus:quarkus-grpc'
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ repositories {

dependencies {
implementation enforcedPlatform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}")
implementation 'io.quarkus:quarkus-resteasy'
implementation 'io.quarkus:quarkus-rest'
implementation 'io.quarkus:quarkus-grpc'
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ repositories {

dependencies {
implementation enforcedPlatform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}")
implementation 'io.quarkus:quarkus-resteasy'
implementation 'io.quarkus:quarkus-rest'
implementation 'io.quarkus:quarkus-grpc'
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ subprojects {

dependencies {

implementation 'io.quarkus:quarkus-resteasy'
implementation 'io.quarkus:quarkus-rest'

testImplementation 'io.quarkus:quarkus-junit5'

Expand Down
Loading