Я переписал свой маленький проект Java 8 с простого jar на отдельный модуль на Java 11. В прошлом я создавал jar с Gradle, и он был совместим с Windows и Linux.Теперь я настроил Gradle для сборки моего модуля и создания собственного образа среды выполнения, и он работает, но только в Linux.Мой пользовательский образ времени выполнения содержит только библиотеки Linux.Есть ли возможность собрать образ для Windows на Linux?Я знаю, что могу открыть свой проект в Windows и создать там образ, но я бы хотел сохранить свой проект в одной ОС.Вот моя сборка Gradle:
plugins {
id 'application'
id 'org.openjfx.javafxplugin' version '0.0.5'
}
group 'eu.sample'
version '2.0'
repositories {
mavenCentral()
}
javafx {
modules = [ 'javafx.controls', 'javafx.fxml' ]
}
mainClassName = "$moduleName/eu.sample.app.Main"
def java_home = hasProperty('org.gradle.java.home') ? getProperty('org.gradle.java.home') : System.getenv('JAVA_HOME')
def fx_jmods = hasProperty('path.to.fx.mods') ? getProperty('path.to.fx.mods') : System.getenv('PATH_TO_FX_MODS')
dependencies {
}
task jlink(type: Exec) {
dependsOn 'clean'
dependsOn 'jar'
workingDir 'build'
if (java_home == null) {
throw new RuntimeException("java_home is not defined.")
}
if (fx_jmods == null) {
throw new RuntimeException("fx_jmods is not defined.")
}
commandLine "${java_home}/bin/jlink", '--module-path', "libs${File.pathSeparatorChar}${fx_jmods}",
'--add-modules', "${moduleName}", '--output', "${moduleName}", '--strip-debug',
'--compress', '2', '--no-header-files', '--no-man-pages'
}
Я добавил в строки build.gradle перед запуском задачи jlinkWin и запустил чистую задачу:
task jlinkWin(type: Exec) {
dependsOn 'clean'
dependsOn 'jar'
workingDir 'build'
if (java_home == null) {
throw new RuntimeException("java_home is not defined.")
}
if (fx_jmods == null) {
throw new RuntimeException("fx_jmods is not defined.")
}
commandLine "${java_home}/bin/jlink", '--module-path', "/home/user1/Download/win-jdk-11.0.1/jmods${File.pathSeparatorChar}libs${File.pathSeparatorChar}${fx_jmods}",
'--add-modules', "${moduleName}", '--output', "${moduleName}", '--strip-debug',
'--compress', '2', '--no-header-files', '--no-man-pages'
}
Обновленный код, приведенный выше, который создает пользовательский образ времени выполнения дляWindows, но без библиотек JavaFX.