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 b700d2edb..af15e52b6 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 @@ -253,11 +253,6 @@ public class QuarkusDev extends QuarkusTask { wiringClassesDirectory.mkdirs(); addToClassPaths(classPathManifest, context, wiringClassesDirectory); - //now we need to build a temporary jar to actually run - File tempFile = new File(getBuildDir(), extension.finalName() + "-dev.jar"); - tempFile.delete(); - tempFile.deleteOnExit(); - StringBuilder resources = new StringBuilder(); String res = null; for (File file : extension.resourcesDir()) { @@ -377,6 +372,10 @@ public class QuarkusDev extends QuarkusTask { context.setCacheDir(new File(getBuildDir(), "transformer-cache").getAbsoluteFile()); // this is the jar file we will use to launch the dev mode main class + final File tempFile = new File(getBuildDir(), extension.finalName() + "-dev.jar"); + tempFile.delete(); + tempFile.deleteOnExit(); + context.setDevModeRunnerJarFile(tempFile); try (ZipOutputStream out = new ZipOutputStream(new FileOutputStream(tempFile))) { out.putNextEntry(new ZipEntry("META-INF/")); @@ -389,19 +388,23 @@ public class QuarkusDev extends QuarkusTask { out.putNextEntry(new ZipEntry(DevModeMain.DEV_MODE_CONTEXT)); ByteArrayOutputStream bytes = new ByteArrayOutputStream(); - ObjectOutputStream obj = new ObjectOutputStream(new DataOutputStream(bytes)); - obj.writeObject(context); - obj.close(); + try (ObjectOutputStream obj = new ObjectOutputStream(new DataOutputStream(bytes))) { + obj.writeObject(context); + } out.write(bytes.toByteArray()); out.putNextEntry(new ZipEntry(BootstrapConstants.SERIALIZED_APP_MODEL)); bytes = new ByteArrayOutputStream(); - obj = new ObjectOutputStream(new DataOutputStream(bytes)); - obj.writeObject(appModel); - obj.close(); + try (ObjectOutputStream obj = new ObjectOutputStream(new DataOutputStream(bytes))) { + obj.writeObject(appModel); + } out.write(bytes.toByteArray()); } + final Path serializedModel = QuarkusGradleUtils.serializeAppModel(appModel); + serializedModel.toFile().deleteOnExit(); + args.add("-D" + BootstrapConstants.SERIALIZED_APP_MODEL + "=" + serializedModel.toAbsolutePath()); + extension.outputDirectory().mkdirs(); args.add("-jar"); diff --git a/devtools/gradle/src/main/java/io/quarkus/gradle/tasks/QuarkusGradleUtils.java b/devtools/gradle/src/main/java/io/quarkus/gradle/tasks/QuarkusGradleUtils.java new file mode 100644 index 000000000..fe44c1fe5 --- /dev/null +++ b/devtools/gradle/src/main/java/io/quarkus/gradle/tasks/QuarkusGradleUtils.java @@ -0,0 +1,19 @@ +package io.quarkus.gradle.tasks; + +import java.io.IOException; +import java.io.ObjectOutputStream; +import java.nio.file.Files; +import java.nio.file.Path; + +import io.quarkus.bootstrap.model.AppModel; + +public class QuarkusGradleUtils { + + public static Path serializeAppModel(final AppModel appModel) throws IOException { + final Path serializedModel = Files.createTempFile("quarkus-", "-gradle-test"); + try (ObjectOutputStream out = new ObjectOutputStream(Files.newOutputStream(serializedModel))) { + out.writeObject(appModel); + } + return serializedModel; + } +} diff --git a/devtools/gradle/src/main/java/io/quarkus/gradle/tasks/QuarkusTestConfig.java b/devtools/gradle/src/main/java/io/quarkus/gradle/tasks/QuarkusTestConfig.java index 48280ab08..681e57a6f 100644 --- a/devtools/gradle/src/main/java/io/quarkus/gradle/tasks/QuarkusTestConfig.java +++ b/devtools/gradle/src/main/java/io/quarkus/gradle/tasks/QuarkusTestConfig.java @@ -1,7 +1,5 @@ package io.quarkus.gradle.tasks; -import java.io.ObjectOutputStream; -import java.nio.file.Files; import java.nio.file.Path; import java.util.Map; @@ -29,10 +27,7 @@ public class QuarkusTestConfig extends QuarkusTask { .toAbsolutePath() .toString(); - final Path serializedModel = Files.createTempFile("quarkus-", "-gradle-test"); - try (ObjectOutputStream out = new ObjectOutputStream(Files.newOutputStream(serializedModel))) { - out.writeObject(deploymentDeps); - } + final Path serializedModel = QuarkusGradleUtils.serializeAppModel(deploymentDeps); for (Test test : getProject().getTasks().withType(Test.class)) { final Map props = test.getSystemProperties(); diff --git a/independent-projects/bootstrap/core/src/main/java/io/quarkus/bootstrap/BootstrapAppModelFactory.java b/independent-projects/bootstrap/core/src/main/java/io/quarkus/bootstrap/BootstrapAppModelFactory.java index 9ba87fa4c..c2d53d318 100644 --- a/independent-projects/bootstrap/core/src/main/java/io/quarkus/bootstrap/BootstrapAppModelFactory.java +++ b/independent-projects/bootstrap/core/src/main/java/io/quarkus/bootstrap/BootstrapAppModelFactory.java @@ -221,7 +221,7 @@ public class BootstrapAppModelFactory { final Path p = Paths.get(serializedModel); if (Files.exists(p)) { try (InputStream existing = Files.newInputStream(Paths.get(serializedModel))) { - AppModel appModel = (AppModel) new ObjectInputStream(existing).readObject(); + final AppModel appModel = (AppModel) new ObjectInputStream(existing).readObject(); return new CurationResult(appModel); } catch (IOException | ClassNotFoundException e) { log.error("Failed to load serialized app mode", e);