我正在尝试使用fxlauncher为javafx 8应用程序创建本机安装程序,如http://fxldemo.tornado.no/中所述
在示例提供的pom.xml
中,我不明白执行embed-manifest-in-launcher
正在做什么。
问题:有人可以解释那里发生的事情吗?
第一次执行是直接的,它指定了一个java类,它有main方法并提供了参数。
<execution>
<id>create-manifest</id>
<phase>package</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<mainClass>fxlauncher.CreateManifest</mainClass>
<arguments>
<argument>${app.url}</argument>
<argument>${app.mainClass}</argument>
<argument>${app.dir}</argument>
</arguments>
</configuration>
</execution>
<!-- Embed app.xml inside fxlauncher.xml so we don't need to reference app.xml
to start the app -->
<execution>
<id>embed-manifest-in-launcher</id>
<phase>package</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>jar</executable>
<workingDirectory>${app.dir}</workingDirectory>
<arguments>
<argument>uf</argument>
<argument>fxlauncher.jar</argument>
<argument>app.xml</argument>
</arguments>
</configuration>
</execution>
答案 0 :(得分:0)
执行上方的评论已经提供了第一个提示:
在fxlauncher.xml中嵌入app.xml,因此我们不需要引用app.xml来启动应用程序
executable
配置条目设置为jar
,因此它将运行jar
命令。
然后它会传递参数uf
,从jar help命令我们可以看到:
-u update existing archive
-f specify archive file name
因此,f
选项也期望一个参数,这确实是fxlauncher.jar
条目。
因此,将执行的完整命令将是:
jar uf fxlauncher.jar app.xml
根据上面的评论,这将更新添加到fxlauncher.jar
文件的现有和提供的app.xml
文件。
这样的执行绑定到包含package
(default one的项目中的jar
阶段,因此无需指定它,这将在{{之后执行3}}这个阶段的包装(例如Maven Jar插件)。因此,构建将首先创建/打包jar文件,然后运行这些执行来更改/更新它。