From e149eb3109c7579876089ff5be925513d1d178eb Mon Sep 17 00:00:00 2001 From: Paulo Lieuthier Date: Mon, 7 Oct 2019 13:47:48 -0300 Subject: [PATCH 1/2] Make working directory configurable for Gradle's and Maven's dev tasks --- .../quarkus/gradle/QuarkusPluginExtension.java | 14 ++++++++++++++ .../io/quarkus/gradle/tasks/QuarkusDev.java | 18 +++++++++++++++++- .../main/java/io/quarkus/maven/DevMojo.java | 5 ++++- 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/devtools/gradle/src/main/java/io/quarkus/gradle/QuarkusPluginExtension.java b/devtools/gradle/src/main/java/io/quarkus/gradle/QuarkusPluginExtension.java index 99cb731c86722..43f59c65813e7 100644 --- a/devtools/gradle/src/main/java/io/quarkus/gradle/QuarkusPluginExtension.java +++ b/devtools/gradle/src/main/java/io/quarkus/gradle/QuarkusPluginExtension.java @@ -30,6 +30,8 @@ public class QuarkusPluginExtension { private String sourceDir; + private String workingDir; + private String outputConfigDirectory; public QuarkusPluginExtension(Project project) { @@ -80,6 +82,18 @@ public void setSourceDir(String sourceDir) { this.sourceDir = sourceDir; } + public File workingDir() { + if (workingDir == null) { + workingDir = outputDirectory().getPath(); + } + + return new File(workingDir); + } + + public void setWorkingDir(String workingDir) { + this.workingDir = workingDir; + } + public File wiringClassesDirectory() { return new File(project.getBuildDir() + File.separator + wiringClassesDirectory); } diff --git a/devtools/gradle/src/main/java/io/quarkus/gradle/tasks/QuarkusDev.java b/devtools/gradle/src/main/java/io/quarkus/gradle/tasks/QuarkusDev.java index 1483c26824625..bf590f946afa1 100644 --- a/devtools/gradle/src/main/java/io/quarkus/gradle/tasks/QuarkusDev.java +++ b/devtools/gradle/src/main/java/io/quarkus/gradle/tasks/QuarkusDev.java @@ -70,6 +70,8 @@ public class QuarkusDev extends QuarkusTask { private String sourceDir; + private String workingDir; + private String jvmArgs; private boolean preventnoverify = false; @@ -104,6 +106,20 @@ public void setSourceDir(String sourceDir) { this.sourceDir = sourceDir; } + @Optional + @InputDirectory + public File getWorkingDir() { + if (workingDir == null) + return extension().workingDir(); + else + return new File(workingDir); + } + + @Option(description = "Set working directory", option = "working-dir") + public void setWorkingDir(String workingDir) { + this.workingDir = workingDir; + } + @Optional @Input public String getJvmArgs() { @@ -308,7 +324,7 @@ public void startDev() { ProcessBuilder pb = new ProcessBuilder(args.toArray(new String[0])); pb.redirectErrorStream(true); pb.redirectInput(ProcessBuilder.Redirect.INHERIT); - pb.directory(extension.outputDirectory()); + pb.directory(getWorkingDir()); System.out.println("Starting process: "); pb.command().forEach(System.out::println); System.out.println("Args: "); diff --git a/devtools/maven/src/main/java/io/quarkus/maven/DevMojo.java b/devtools/maven/src/main/java/io/quarkus/maven/DevMojo.java index 2d6930b829224..0e2e8918954d4 100644 --- a/devtools/maven/src/main/java/io/quarkus/maven/DevMojo.java +++ b/devtools/maven/src/main/java/io/quarkus/maven/DevMojo.java @@ -132,6 +132,9 @@ public class DevMojo extends AbstractMojo { @Parameter(defaultValue = "${project.build.sourceDirectory}") private File sourceDir; + @Parameter(defaultValue = "${project.build.directory}") + private File workingDir; + @Parameter(defaultValue = "${jvm.args}") private String jvmArgs; @@ -404,7 +407,7 @@ public void execute() throws MojoFailureException, MojoExecutionException { pb.redirectError(ProcessBuilder.Redirect.INHERIT); pb.redirectOutput(ProcessBuilder.Redirect.INHERIT); pb.redirectInput(ProcessBuilder.Redirect.INHERIT); - pb.directory(outputDirectory); + pb.directory(workingDir); Process p = pb.start(); //https://github.com/quarkusio/quarkus/issues/232 From c0a7f31abd86fac6cfc3ac5484f82d70b8f94534 Mon Sep 17 00:00:00 2001 From: Paulo Lieuthier Date: Mon, 7 Oct 2019 19:13:49 -0300 Subject: [PATCH 2/2] Document Gradle option for dev task's working directory --- docs/src/main/asciidoc/gradle-tooling.adoc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/src/main/asciidoc/gradle-tooling.adoc b/docs/src/main/asciidoc/gradle-tooling.adoc index 462078ff76749..be9f0fd525fef 100644 --- a/docs/src/main/asciidoc/gradle-tooling.adoc +++ b/docs/src/main/asciidoc/gradle-tooling.adoc @@ -252,6 +252,14 @@ redeployed application. If there are any issues with compilation or deployment a Hit `CTRL+C` to stop the application. +You can change the working directory the development environment runs on: + +---- +quarkusDev { + workingDir = rootProject.projectDir +} +---- + == Debugging In development mode, Quarkus starts by default with debug mode enabled, listening to port `5005` without suspending the JVM.