我有一个简单的JavaFX应用程序,我想为Windows机器创建一个安装程序。 javafx-maven-plugin
工作并创建应用程序的可执行文件以及Windows安装程序,但问题是,它创建了一个Windows安装程序,其中包含中的JavaFX应用程序和完整的JRE 。
那么,如何在不使用完整的Java框架的情况下使用javafx-maven-plugin
为Windows构建本机文件。也许它应该只创建一个Java Framework的依赖。这使安装程序从1.5MB扩展到200MB磁盘空间。
使用Maven我使用命令mvn clean compile jfx:build-jar jfx:native
来获取Windows中的本机文件,这是我正在使用的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>
答案 0 :(得分:5)
我是javafx-maven-plugin的维护者。
创建安装程序时,“按设计”是将JRE捆绑在应用程序中。我自己也偶然发现了这一点,但是尽管有oracle的当前文档,但我发现无法运行我生成的文件(使用JDK 1.8u40及更高版本,Windows)而没有将JRE放在我的本机启动器旁边。 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系统上的本机启动程序的(IMHO)严重解决方法。此外,还支持在正常的maven-lifecycle中创建包:https://github.com/javafx-maven-plugin/javafx-maven-plugin/blob/master/src/it/07-lifecycle-build-jfx-native/pom.xml