Skip to content

Commit 365f957

Browse files
authored
Merge pull request #117 from keastrid/issue-112-toolchain
Use gradle toolchains for packaging jdk
2 parents 29aa988 + c289a39 commit 365f957

File tree

4 files changed

+57
-6
lines changed

4 files changed

+57
-6
lines changed

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@
1313
import io.github.fvarrui.javapackager.model.Platform;
1414
import io.github.fvarrui.javapackager.model.WindowsConfig;
1515
import io.github.fvarrui.javapackager.packagers.PackagerSettings;
16+
import org.gradle.api.internal.provider.Providers;
17+
import org.gradle.api.plugins.JavaPluginExtension;
18+
import org.gradle.api.provider.Provider;
19+
import org.gradle.jvm.toolchain.JavaLauncher;
20+
import org.gradle.jvm.toolchain.JavaToolchainService;
21+
import org.gradle.jvm.toolchain.JavaToolchainSpec;
1622

1723
/**
1824
* JavaPackager plugin extension for Gradle

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

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@
77
import java.util.List;
88
import java.util.Map;
99

10-
import org.gradle.api.tasks.Input;
11-
import org.gradle.api.tasks.InputDirectory;
12-
import org.gradle.api.tasks.InputFile;
13-
import org.gradle.api.tasks.Optional;
14-
import org.gradle.api.tasks.OutputDirectory;
10+
import org.gradle.api.Project;
11+
import org.gradle.api.internal.provider.Providers;
12+
import org.gradle.api.plugins.JavaPluginExtension;
13+
import org.gradle.api.provider.Property;
14+
import org.gradle.api.provider.Provider;
15+
import org.gradle.api.tasks.*;
1516

1617
import groovy.lang.Closure;
1718
import io.github.fvarrui.javapackager.model.LinuxConfig;
@@ -21,6 +22,9 @@
2122
import io.github.fvarrui.javapackager.model.WindowsConfig;
2223
import io.github.fvarrui.javapackager.packagers.Packager;
2324
import io.github.fvarrui.javapackager.packagers.PackagerFactory;
25+
import org.gradle.jvm.toolchain.JavaLauncher;
26+
import org.gradle.jvm.toolchain.JavaToolchainService;
27+
import org.gradle.jvm.toolchain.JavaToolchainSpec;
2428

2529
/**
2630
* Packaging task fro Gradle
@@ -90,6 +94,18 @@ public File getAssetsDir() {
9094
public void setAssetsDir(File assetsDir) {
9195
this.assetsDir = assetsDir;
9296
}
97+
98+
@InputDirectory
99+
@Optional
100+
private File packagingJdk;
101+
102+
public File getPackagingJdk() {
103+
return packagingJdk;
104+
}
105+
106+
public void setPackagingJdk(File packagingJdk) {
107+
this.packagingJdk = packagingJdk;
108+
}
93109

94110
@Input
95111
@Optional
@@ -533,6 +549,7 @@ protected Packager createPackager() throws Exception {
533549
.additionalResources(defaultIfNull(additionalResources, extension.getAdditionalResources()))
534550
.administratorRequired(defaultIfNull(administratorRequired, extension.getAdministratorRequired()))
535551
.version(defaultIfNull(version, extension.getVersion(), getProject().getVersion().toString()))
552+
.packagingJdk(defaultIfNull(packagingJdk, getDefaultToolchain(getProject())))
536553
.assetsDir(defaultIfNull(assetsDir, extension.getAssetsDir()))
537554
.bundleJre(defaultIfNull(bundleJre, extension.getBundleJre()))
538555
.copyDependencies(defaultIfNull(copyDependencies, extension.getCopyDependencies()))
@@ -568,5 +585,19 @@ protected Packager createPackager() throws Exception {
568585
.winConfig(defaultIfNull(winConfig, extension.getWinConfig()));
569586

570587
}
588+
589+
private File getDefaultToolchain(Project project) {
590+
// Default toolchain
591+
JavaToolchainSpec toolchain = project.getExtensions().getByType(JavaPluginExtension.class).getToolchain();
592+
593+
// acquire a provider that returns the launcher for the toolchain
594+
JavaToolchainService service = project.getExtensions().getByType(JavaToolchainService.class);
595+
Provider<JavaLauncher> defaultLauncher = service.launcherFor(toolchain).orElse(Providers.notDefined());
596+
597+
if (defaultLauncher.isPresent()) {
598+
return defaultLauncher.get().getMetadata().getInstallationPath().getAsFile();
599+
}
600+
return new File(System.getProperty("java.home")); // Use java.home as fallback
601+
}
571602

572603
}

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)