Skip to content

Commit

Permalink
deprecate buildNative gradle task
Browse files Browse the repository at this point in the history
  • Loading branch information
glefloch committed Apr 7, 2020
1 parent a327a4b commit 60fd16f
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 563 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
Expand Down Expand Up @@ -81,6 +82,9 @@ public void canBuild(SourceType sourceType) throws IOException, InterruptedExcep
assertThat(build.task(":build").getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
// gradle build should not build the native image
assertThat(build.task(":buildNative")).isNull();
Path buildDir = projectRoot.toPath().resolve("build");
assertThat(buildDir).exists();
assertThat(buildDir.resolve("foo-1.0.0-SNAPSHOT-runner")).doesNotExist();
}

private void createProject(SourceType sourceType) throws IOException {
Expand Down
28 changes: 22 additions & 6 deletions devtools/gradle/src/main/java/io/quarkus/gradle/QuarkusPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import java.util.Map;
import java.util.function.Consumer;

import org.gradle.api.DefaultTask;
import org.gradle.api.GradleException;
import org.gradle.api.Plugin;
import org.gradle.api.Project;
Expand All @@ -25,20 +26,22 @@
import io.quarkus.gradle.tasks.QuarkusDev;
import io.quarkus.gradle.tasks.QuarkusGenerateConfig;
import io.quarkus.gradle.tasks.QuarkusListExtensions;
import io.quarkus.gradle.tasks.QuarkusNative;
import io.quarkus.gradle.tasks.QuarkusTestConfig;
import io.quarkus.gradle.tasks.QuarkusTestNative;

public class QuarkusPlugin implements Plugin<Project> {

public static final String ID = "io.quarkus";
public static final String QUARKUS_PACKAGE_TYPE = "quarkus.package.type";

public static final String EXTENSION_NAME = "quarkus";
public static final String LIST_EXTENSIONS_TASK_NAME = "listExtensions";
public static final String ADD_EXTENSION_TASK_NAME = "addExtension";
public static final String QUARKUS_BUILD_TASK_NAME = "quarkusBuild";
public static final String GENERATE_CONFIG_TASK_NAME = "generateConfig";
public static final String QUARKUS_DEV_TASK_NAME = "quarkusDev";

@Deprecated
public static final String BUILD_NATIVE_TASK_NAME = "buildNative";
public static final String TEST_NATIVE_TASK_NAME = "testNative";
public static final String QUARKUS_TEST_CONFIG_TASK_NAME = "quarkusTestConfig";
Expand Down Expand Up @@ -69,9 +72,15 @@ private void registerTasks(Project project) {

Task quarkusBuild = tasks.create(QUARKUS_BUILD_TASK_NAME, QuarkusBuild.class);
Task quarkusDev = tasks.create(QUARKUS_DEV_TASK_NAME, QuarkusDev.class);
Task buildNative = tasks.create(BUILD_NATIVE_TASK_NAME, QuarkusNative.class);
Task quarkusTestConfig = tasks.create(QUARKUS_TEST_CONFIG_TASK_NAME, QuarkusTestConfig.class);

Task buildNative = tasks.create(BUILD_NATIVE_TASK_NAME, DefaultTask.class);
buildNative.finalizedBy(quarkusBuild);
buildNative.doFirst(t -> project.getLogger()
.warn("The 'buildNative' task has been deprecated in favor of 'build -Dquarkus.package.type=native'"));

configureBuildNativeTask(project);

project.getPlugins().withType(
BasePlugin.class,
basePlugin -> tasks.getByName(BasePlugin.ASSEMBLE_TASK_NAME).dependsOn(quarkusBuild));
Expand All @@ -85,8 +94,6 @@ private void registerTasks(Project project) {
quarkusBuild.dependsOn(classesTask, tasks.getByName(JavaPlugin.JAR_TASK_NAME));
quarkusTestConfig.dependsOn(classesTask);

buildNative.dependsOn(tasks.getByName(BasePlugin.ASSEMBLE_TASK_NAME));

SourceSetContainer sourceSets = project.getConvention().getPlugin(JavaPluginConvention.class)
.getSourceSets();
SourceSet nativeTestSourceSet = sourceSets.create(NATIVE_TEST_SOURCE_SET_NAME);
Expand All @@ -111,9 +118,8 @@ private void registerTasks(Project project) {
.extendsFrom(configurations.findByName(JavaPlugin.TEST_RUNTIME_ONLY_CONFIGURATION_NAME));

Task testNative = tasks.create(TEST_NATIVE_TASK_NAME, QuarkusTestNative.class);
testNative.dependsOn(buildNative);
testNative.dependsOn(quarkusBuild);
testNative.setShouldRunAfter(Collections.singletonList(tasks.findByName(JavaPlugin.TEST_TASK_NAME)));

Consumer<Test> configureTestTask = t -> {
// Quarkus test configuration task which should be executed before any Quarkus test
t.dependsOn(quarkusTestConfig);
Expand All @@ -132,6 +138,16 @@ private void verifyGradleVersion() {
}
}

private void configureBuildNativeTask(Project project) {
project.getGradle().getTaskGraph().whenReady(taskGraph -> {
if (taskGraph.hasTask(project.getPath() + BUILD_NATIVE_TASK_NAME)
|| taskGraph.hasTask(project.getPath() + TEST_NATIVE_TASK_NAME)) {
project.getExtensions().getExtraProperties()
.set(QUARKUS_PACKAGE_TYPE, "native");
}
});
}

private void afterEvaluate(Project project) {
project.getConfigurations().getByName(JavaPlugin.COMPILE_CLASSPATH_CONFIGURATION_NAME)
.getIncoming().getDependencies()
Expand Down
Loading

0 comments on commit 60fd16f

Please sign in to comment.