Skip to content

Commit 92476cd

Browse files
committed
Merge branch 'issue-112'
2 parents aebe5d5 + 8c375dc commit 92476cd

File tree

9 files changed

+84
-10
lines changed

9 files changed

+84
-10
lines changed

build.gradle

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ plugins {
1212
repositories {
1313
mavenLocal()
1414
mavenCentral()
15+
maven {
16+
url 'https://plugins.gradle.org/m2/'
17+
}
1518
}
1619

1720
gradlePlugin {
@@ -47,7 +50,7 @@ dependencies {
4750
implementation 'commons-io:commons-io:2.6'
4851
implementation 'org.apache.commons:commons-collections4:4.1'
4952
implementation 'org.apache.velocity:velocity-engine-core:2.0'
50-
implementation 'io.github.fvarrui:gradle-launch4j:2.4.7'
53+
implementation 'io.github.fvarrui:gradle-launch4j:2.4.7'
5154
implementation 'com.netflix.nebula:gradle-ospackage-plugin:8.4.1'
5255
implementation 'net.jsign:jsign-core:3.1'
5356

@@ -116,6 +119,12 @@ task generatePluginDescriptor(type: JavaExec, dependsOn: compileJava) {
116119
.mavenInstaller
117120
.pom
118121
.withXml {
122+
asNode().appendNode('repositories').appendNode('repository')
123+
.with {
124+
appendNode('id', 'gradle')
125+
appendNode('name', 'Gradle Plugin Portal')
126+
appendNode('url', 'https://plugins.gradle.org/m2/')
127+
}
119128
asNode().appendNode('build')
120129
.with {
121130
appendNode('directory', directory)

src/main/java/io/github/fvarrui/javapackager/gradle/CreateWindowsExe.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import java.io.File;
44
import java.util.HashSet;
55
import java.util.List;
6-
import java.util.UUID;
76

87
import org.apache.commons.lang3.StringUtils;
98

@@ -53,7 +52,8 @@ protected File doApply(Packager packager) throws Exception {
5352

5453
String jarPath = winConfig.isWrapJar() ? genericJar.getAbsolutePath() : jarFile.getName();
5554

56-
Launch4jLibraryTask l4jTask = createLaunch4jTask();
55+
Launch4jLibraryTask l4jTask = Context.getGradleContext().getLibraryTask();
56+
l4jTask.getOutputs().upToDateWhen(task -> false);
5757
l4jTask.setHeaderType(winConfig.getHeaderType().toString());
5858
l4jTask.setJar(jarPath);
5959
l4jTask.setDontWrapJar(!winConfig.isWrapJar());
@@ -87,10 +87,6 @@ protected File doApply(Packager packager) throws Exception {
8787
return executable;
8888
}
8989

90-
private Launch4jLibraryTask createLaunch4jTask() {
91-
return Context.getGradleContext().getProject().getTasks().create("launch4j_" + UUID.randomUUID(), Launch4jLibraryTask.class);
92-
}
93-
9490
private void createAssets(WindowsPackager packager) throws Exception {
9591

9692
File manifestFile = packager.getManifestFile();

src/main/java/io/github/fvarrui/javapackager/gradle/DefaultPackageTask.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ protected Packager createPackager() throws Exception {
2020
.additionalResources(extension.getAdditionalResources())
2121
.administratorRequired(extension.getAdministratorRequired())
2222
.version(defaultIfNull(extension.getVersion(), getProject().getVersion().toString()))
23+
.packagingJdk(extension.getPackagingJdk())
2324
.assetsDir(extension.getAssetsDir())
2425
.bundleJre(extension.getBundleJre())
2526
.copyDependencies(extension.getCopyDependencies())

src/main/java/io/github/fvarrui/javapackager/gradle/GradleContext.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.gradle.api.Project;
66
import org.gradle.api.logging.Logger;
77

8+
import edu.sc.seis.launch4j.tasks.Launch4jLibraryTask;
89
import io.github.fvarrui.javapackager.packagers.Context;
910
import io.github.fvarrui.javapackager.packagers.Packager;
1011

@@ -14,6 +15,8 @@
1415
public class GradleContext extends Context<Logger> {
1516

1617
private Project project;
18+
19+
private Launch4jLibraryTask libraryTask;
1720

1821
public GradleContext(Project project) {
1922
super();
@@ -69,4 +72,12 @@ public File createWindowsExe(Packager packager) throws Exception {
6972
return new CreateWindowsExe().apply(packager);
7073
}
7174

75+
public Launch4jLibraryTask getLibraryTask() {
76+
return libraryTask;
77+
}
78+
79+
public void setLibraryTask(Launch4jLibraryTask libraryTask) {
80+
this.libraryTask = libraryTask;
81+
}
82+
7283
}

src/main/java/io/github/fvarrui/javapackager/gradle/PackagePlugin.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package io.github.fvarrui.javapackager.gradle;
22

3+
import edu.sc.seis.launch4j.tasks.Launch4jLibraryTask;
4+
import io.github.fvarrui.javapackager.packagers.Context;
35
import org.gradle.api.Plugin;
46
import org.gradle.api.Project;
57

6-
import io.github.fvarrui.javapackager.packagers.Context;
8+
import java.util.UUID;
79

810
/**
911
* JavaPackager Gradle plugin
@@ -25,6 +27,8 @@ public void apply(Project project) {
2527
project.getExtensions().create(SETTINGS_EXT_NAME, PackagePluginExtension.class, project);
2628
project.getTasks().create(PACKAGE_TASK_NAME, DefaultPackageTask.class).dependsOn("build");
2729

30+
Context.getGradleContext().setLibraryTask(project.getTasks().create("launch4j_" + UUID.randomUUID(), Launch4jLibraryTask.class));
31+
2832
}
2933

3034
}

src/main/java/io/github/fvarrui/javapackager/gradle/PackagePluginExtension.java

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@
55
import java.util.HashMap;
66

77
import org.gradle.api.Project;
8+
import org.gradle.api.internal.provider.Providers;
9+
import org.gradle.api.plugins.JavaPluginExtension;
10+
import org.gradle.api.provider.Provider;
11+
import org.gradle.jvm.toolchain.JavaLauncher;
12+
import org.gradle.jvm.toolchain.JavaToolchainService;
13+
import org.gradle.jvm.toolchain.JavaToolchainSpec;
814

915
import groovy.lang.Closure;
1016
import io.github.fvarrui.javapackager.model.LinuxConfig;
@@ -48,7 +54,8 @@ public PackagePluginExtension(Project project) {
4854
this.useResourcesAsWorkingDir = true;
4955
this.vmArgs = new ArrayList<>();
5056
this.winConfig = new WindowsConfig();
51-
this.outputDirectory = project.getBuildDir();
57+
this.outputDirectory = project.getBuildDir();
58+
this.packagingJdk = getDefaultToolchain(project);
5259
}
5360

5461
public LinuxConfig linuxConfig(Closure<LinuxConfig> closure) {
@@ -74,5 +81,24 @@ public Manifest manifest(Closure<Manifest> closure) {
7481
project.configure(manifest, closure);
7582
return manifest;
7683
}
84+
85+
/**
86+
* Returns project's default toolchain
87+
* @param project Gradle project
88+
* @return Default toolchain
89+
*/
90+
public File getDefaultToolchain(Project project) {
91+
// Default toolchain
92+
JavaToolchainSpec toolchain = project.getExtensions().getByType(JavaPluginExtension.class).getToolchain();
93+
94+
// acquire a provider that returns the launcher for the toolchain
95+
JavaToolchainService service = project.getExtensions().getByType(JavaToolchainService.class);
96+
Provider<JavaLauncher> defaultLauncher = service.launcherFor(toolchain).orElse(Providers.notDefined());
97+
98+
if (defaultLauncher.isPresent()) {
99+
return defaultLauncher.get().getMetadata().getInstallationPath().getAsFile();
100+
}
101+
return new File(System.getProperty("java.home")); // Use java.home as fallback
102+
}
77103

78104
}

src/main/java/io/github/fvarrui/javapackager/gradle/PackageTask.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,18 @@ public File getAssetsDir() {
9090
public void setAssetsDir(File assetsDir) {
9191
this.assetsDir = assetsDir;
9292
}
93+
94+
@InputDirectory
95+
@Optional
96+
private File packagingJdk;
97+
98+
public File getPackagingJdk() {
99+
return packagingJdk;
100+
}
101+
102+
public void setPackagingJdk(File packagingJdk) {
103+
this.packagingJdk = packagingJdk;
104+
}
93105

94106
@Input
95107
@Optional
@@ -533,6 +545,7 @@ protected Packager createPackager() throws Exception {
533545
.additionalResources(defaultIfNull(additionalResources, extension.getAdditionalResources()))
534546
.administratorRequired(defaultIfNull(administratorRequired, extension.getAdministratorRequired()))
535547
.version(defaultIfNull(version, extension.getVersion(), getProject().getVersion().toString()))
548+
.packagingJdk(defaultIfNull(packagingJdk, extension.getPackagingJdk()))
536549
.assetsDir(defaultIfNull(assetsDir, extension.getAssetsDir()))
537550
.bundleJre(defaultIfNull(bundleJre, extension.getBundleJre()))
538551
.copyDependencies(defaultIfNull(copyDependencies, extension.getCopyDependencies()))

src/main/java/io/github/fvarrui/javapackager/packagers/BundleJre.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ protected File doApply(Packager packager) throws Exception {
4545
List<String> additionalModules = packager.getAdditionalModules();
4646
List<File> additionalModulePaths = packager.getAdditionalModulePaths();
4747

48-
File currentJdk = new File(System.getProperty("java.home"));
48+
File currentJdk = packager.packagingJdk;
4949

5050
Logger.infoIndent("Bundling JRE ... with " + currentJdk);
5151

src/main/java/io/github/fvarrui/javapackager/packagers/PackagerSettings.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,15 @@ public class PackagerSettings {
5555
protected String jreMinVersion;
5656
protected Manifest manifest;
5757
protected List<File> additionalModulePaths;
58+
protected File packagingJdk;
59+
60+
public File getPackagingJdk() {
61+
return packagingJdk;
62+
}
63+
64+
public void setPackagingJdk(File packagingJdk) {
65+
this.packagingJdk = packagingJdk;
66+
}
5867

5968
public File getOutputDirectory() {
6069
return outputDirectory;
@@ -219,6 +228,11 @@ public PackagerSettings outputDirectory(File outputDirectory) {
219228
return this;
220229
}
221230

231+
public PackagerSettings packagingJdk(File packagingJdk) {
232+
this.packagingJdk = packagingJdk;
233+
return this;
234+
}
235+
222236
public PackagerSettings licenseFile(File licenseFile) {
223237
this.licenseFile = licenseFile;
224238
return this;

0 commit comments

Comments
 (0)