Maven+;使用javafxmaven插件构建本机而不使用JRE

Maven+;使用javafxmaven插件构建本机而不使用JRE,java,maven,javafx-8,Java,Maven,Javafx 8,我有一个简单的JavaFX应用程序,我想为Windows机器创建一个安装程序。javafxmaven插件可以与Windows安装程序一起工作并创建应用程序的可执行文件,但问题是,它创建了一个包含javafx应用程序和完整JRE的Windows安装程序 那么,我如何使用javafxmaven插件为Windows构建本机文件,而不携带完整的Java框架呢。也许它应该只创建对Java框架的依赖性。这会使安装程序的磁盘空间从1.5MB膨胀到200MB 对于Maven,我使用命令mvn clean com

我有一个简单的JavaFX应用程序,我想为Windows机器创建一个安装程序。
javafxmaven插件
可以与Windows安装程序一起工作并创建应用程序的可执行文件,但问题是,它创建了一个包含javafx应用程序和完整JRE的Windows安装程序

那么,我如何使用
javafxmaven插件
为Windows构建本机文件,而不携带完整的Java框架呢。也许它应该只创建对Java框架的依赖性。这会使安装程序的磁盘空间从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>

4.0.0
com.demo
hello javafx maven示例
JavaFX示例Maven项目
Jaa演示
罐子
1.0-快照
com.zenjava
javafxmaven插件
8.1.3
com.demo.helloWorld

我是javafx maven插件的维护者

在创建安装程序时,JRE是“按设计”捆绑在应用程序中的。我自己也偶然发现了这一点,但尽管有oracle的最新文档,我发现如果没有本地启动器之外的JRE,我不可能运行生成的文件(使用JDK 1.8u40及以上版本,Windows)。packager.dll似乎要求它在那里。但要说清楚:这可能只是我的一个问题,我没有证实,也没有对此进行调查

回答您的问题:您可以通过传递一些bundleArguments来删除JRE:

<bundleArguments>
    <runtime />
</bundleArguments>

我自己也这么做,主要是为了加速测试项目,比如:


<> > >编辑:请考虑升级到插件版本81.5,因为有一些bug被修复,包括Linux系统上的本地发射器的(严重的)严重故障。此外,还支持在正常的maven生命周期中创建捆绑包:

如果不将JRE捆绑到应用程序中,别人会如何使用它?您希望他们执行哪些步骤来使用您的应用程序?@jewelsea我更愿意为安装程序设置一种先决条件,以便在安装过程中请求JRE,而不是将整个JRE随身携带。此外,大多数人的机器中通常都安装了Java。因此,先决条件设置是带外的,超出了您的问题范围?@jewelsea好的,那么只删除最终本机构建的JRE。使用。我对JavaFX Maven插件的了解还不够,不知道该工具是否也可以使用。只是一个关于应用程序的提示——“属性”:oracle在一个名为
packager.JAR
的特殊JAR中加入了一些魔力,更多信息可以在这里找到: