java - Maven + 使用没有 JRE 的 javafx-maven-plugin 构建 native

标签 java maven javafx-8

我有一个简单的 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/

相关文章:

TableView 上的 JavaFx CheckBox 在选中/未选中时不会更新模型

audio - 使用JavaFX,如何让应用播放本地文件而不是URI的声音?

java - 如何处理负载并配置 tomcat 7 服务器和应用程序,使其能够处理超过 2000 个请求

java - Grails 2.4 joda-time 插件

java - 实时 JavaFX-8 表单管理

maven - 未应用定义的建议 : Aspectj Pointcut

spring - 有效解决 501 HTTPS Required Error in Maven Build for Moving (http ://repo1. maven.org/maven2 & http ://repo. spring.io) to HTTPS?

java - 如何使用模式将图标设置为树节点

switch 语句上的 Java Enum

java - 升级到 spring 3.2 但邮件似乎消失了?