我有一个简单的 JavaFX 应用程序,我想为 Windows 机器创建一个安装程序。 javafx-maven-plugin
工作并创建应用程序的可执行文件以及 Windows 安装程序,但问题是,它创建了一个 Windows 安装程序,其中包含 中的 JavaFX 应用程序和完整的JRE 也是。
那么,我如何才能使用 javafx-maven-plugin
构建适用于 Windows 的 native 文件,而无需在其中携带完整的 Java 框架。也许它应该只创建对 Java 框架的依赖。这会使安装程序的磁盘空间从 1.5MB 膨胀到 200MB。
在 Maven 中,我使用命令 mvn clean compile jfx:build-jar jfx:native
来获取 Windows 中的 native 文件,这是我正在使用的 POM 文件:
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.demo</groupId>
<artifactId>hello-javafx-maven-example</artifactId>
<name>JavaFX Example Maven Project</name>
<organization>
<name>Jaa Demo</name>
</organization>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>com.zenjava</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>8.1.3</version>
<configuration>
<mainClass>com.demo.helloWorld</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
最佳答案
我是那个 javafx-maven-plugin 的维护者。
在创建安装程序时,JRE 是“按设计”捆绑在您的应用程序中的。我自己也偶然发现了这一点,但尽管有当前的 oracle 文档,我发现如果没有 JRE 除了我的 native 启动器,就无法运行我生成的文件(使用 JDK 1.8u40 及更高版本,Windows)。 packager.dll 似乎要求它在那里。但声明一下:这可能只是我的问题,没有验证也没有调查过。
回答您的问题:您可以通过传递一些 bundleArguments 来删除 JRE:
<bundleArguments>
<runtime />
</bundleArguments>
我自己正在这样做,主要是为了加快测试项目的速度,如下所示: https://github.com/javafx-maven-plugin/javafx-maven-plugin/blob/master/src/it/03-cli-jfx-native/pom.xml#L31
编辑:请考虑升级到插件版本 8.1.5,因为修复了一些错误,包括针对 linux 系统上的 native 启动器的(恕我直言)严重解决方法。还支持在正常的 maven 生命周期中创建包:https://github.com/javafx-maven-plugin/javafx-maven-plugin/blob/master/src/it/07-lifecycle-build-jfx-native/pom.xml
关于java - Maven + 使用没有 JRE 的 javafx-maven-plugin 构建 native ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31951578/