From 6d236fcbf64809ad30573c5a726568e8216f5c9a Mon Sep 17 00:00:00 2001 From: Axel Howind Date: Tue, 6 Feb 2024 10:38:48 +0100 Subject: [PATCH] fix #244 secondary launcher fails in Kotlin DSL --- .../jlink/data/JlinkPluginExtension.groovy | 2 +- .../org/beryx/jlink/JlinkPluginSpec.groovy | 18 ++++++++++ .../multi-launch-kotlin-dsl/build.gradle.kts | 35 +++++++++++++++++++ .../settings.gradle.kts | 1 + .../src/main/java/module-info.java | 2 ++ .../main/java/org/example/multi/Hello.java | 7 ++++ .../java/org/example/multi/HelloAgain.java | 7 ++++ .../main/java/org/example/multi/Howdy.java | 7 ++++ 8 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 src/test/resources/multi-launch-kotlin-dsl/build.gradle.kts create mode 100644 src/test/resources/multi-launch-kotlin-dsl/settings.gradle.kts create mode 100644 src/test/resources/multi-launch-kotlin-dsl/src/main/java/module-info.java create mode 100644 src/test/resources/multi-launch-kotlin-dsl/src/main/java/org/example/multi/Hello.java create mode 100644 src/test/resources/multi-launch-kotlin-dsl/src/main/java/org/example/multi/HelloAgain.java create mode 100644 src/test/resources/multi-launch-kotlin-dsl/src/main/java/org/example/multi/Howdy.java diff --git a/src/main/groovy/org/beryx/jlink/data/JlinkPluginExtension.groovy b/src/main/groovy/org/beryx/jlink/data/JlinkPluginExtension.groovy index c2b597d0..be14e379 100644 --- a/src/main/groovy/org/beryx/jlink/data/JlinkPluginExtension.groovy +++ b/src/main/groovy/org/beryx/jlink/data/JlinkPluginExtension.groovy @@ -174,7 +174,7 @@ class JlinkPluginExtension { action.execute(launcherData.get()) } - void secondaryLauncher(Action action) { + void secondaryLauncher(Action action) { def ld = new SecondaryLauncherData(null) ld.moduleName = moduleName.get() Util.addToListProperty(secondaryLaunchers, ld) diff --git a/src/test/groovy/org/beryx/jlink/JlinkPluginSpec.groovy b/src/test/groovy/org/beryx/jlink/JlinkPluginSpec.groovy index 66b2d2fb..29beba82 100644 --- a/src/test/groovy/org/beryx/jlink/JlinkPluginSpec.groovy +++ b/src/test/groovy/org/beryx/jlink/JlinkPluginSpec.groovy @@ -223,6 +223,24 @@ class JlinkPluginSpec extends Specification { checkOutput(result, 'howdy', 'Howdy!') } + def "should create image of project with multiple launchers using kotlin DSL"() { + when: + + File buildFile = setUpBuild('multi-launch-kotlin-dsl') + BuildResult result = GradleRunner.create() + .withDebug(true) + .withGradleVersion('7.6') + .withProjectDir(testProjectDir.toFile()) + .withPluginClasspath() + .withArguments(JlinkPlugin.TASK_NAME_JLINK, "-is") + .build(); + + then: + checkOutput(result, 'hello', 'Hello, world!') + checkOutput(result, 'helloAgain', 'Hello again!') + checkOutput(result, 'howdy', 'Howdy!') + } + private boolean checkOutput(BuildResult result, String imageName, String expectedOutput) { def imageBinDir = new File(testProjectDir.toFile(), 'build/image/bin') def launcherExt = OperatingSystem.current.windows ? '.bat' : '' diff --git a/src/test/resources/multi-launch-kotlin-dsl/build.gradle.kts b/src/test/resources/multi-launch-kotlin-dsl/build.gradle.kts new file mode 100644 index 00000000..667d2bc6 --- /dev/null +++ b/src/test/resources/multi-launch-kotlin-dsl/build.gradle.kts @@ -0,0 +1,35 @@ +plugins { + id("org.javamodularity.moduleplugin") version "1.8.12" + id("org.beryx.jlink") +} + +repositories { + mavenCentral() +} + +extra["moduleName"] = "org.example.multi" + +application { + mainClass.set("org.example.multi.Hello") +} + +jlink { + launcher { + name = "hello" + noConsole = false + jvmArgs = listOf( + "-Xms512m", + "-Xmx4g", + "-XX:+UseShenandoahGC" + ) + } + secondaryLauncher { + name = "helloAgain" + mainClass = "org.example.multi.HelloAgain" + } + secondaryLauncher { + name = "howdy" + moduleName= "org.example.multi" + mainClass = "org.example.multi.Howdy" + } +} diff --git a/src/test/resources/multi-launch-kotlin-dsl/settings.gradle.kts b/src/test/resources/multi-launch-kotlin-dsl/settings.gradle.kts new file mode 100644 index 00000000..739e51d4 --- /dev/null +++ b/src/test/resources/multi-launch-kotlin-dsl/settings.gradle.kts @@ -0,0 +1 @@ +rootProject.name = "multi-launch-kotlin-dsl" diff --git a/src/test/resources/multi-launch-kotlin-dsl/src/main/java/module-info.java b/src/test/resources/multi-launch-kotlin-dsl/src/main/java/module-info.java new file mode 100644 index 00000000..363c234a --- /dev/null +++ b/src/test/resources/multi-launch-kotlin-dsl/src/main/java/module-info.java @@ -0,0 +1,2 @@ +module org.example.multi { +} diff --git a/src/test/resources/multi-launch-kotlin-dsl/src/main/java/org/example/multi/Hello.java b/src/test/resources/multi-launch-kotlin-dsl/src/main/java/org/example/multi/Hello.java new file mode 100644 index 00000000..fa422b78 --- /dev/null +++ b/src/test/resources/multi-launch-kotlin-dsl/src/main/java/org/example/multi/Hello.java @@ -0,0 +1,7 @@ +package org.example.multi; + +public class Hello { + public static void main(String[] args) { + System.out.println("Hello, world!"); + } +} diff --git a/src/test/resources/multi-launch-kotlin-dsl/src/main/java/org/example/multi/HelloAgain.java b/src/test/resources/multi-launch-kotlin-dsl/src/main/java/org/example/multi/HelloAgain.java new file mode 100644 index 00000000..6cf9ce04 --- /dev/null +++ b/src/test/resources/multi-launch-kotlin-dsl/src/main/java/org/example/multi/HelloAgain.java @@ -0,0 +1,7 @@ +package org.example.multi; + +public class HelloAgain { + public static void main(String[] args) { + System.out.println("Hello again!"); + } +} diff --git a/src/test/resources/multi-launch-kotlin-dsl/src/main/java/org/example/multi/Howdy.java b/src/test/resources/multi-launch-kotlin-dsl/src/main/java/org/example/multi/Howdy.java new file mode 100644 index 00000000..6434ee8a --- /dev/null +++ b/src/test/resources/multi-launch-kotlin-dsl/src/main/java/org/example/multi/Howdy.java @@ -0,0 +1,7 @@ +package org.example.multi; + +public class Howdy { + public static void main(String[] args) { + System.out.println("Howdy!"); + } +}