如何使用Jpackage为JavaFX应用程序制作发行格式



由于。jar不再是分发JavaFX项目的最佳格式,我愿意使用JPackage工具来代替,但在阅读了这篇文章:https://stackoverflow.com/a/68823040/4262407之后,我最终有了多个问题,但首先,我只想确保我已经很好地理解了我应该遵循的过程:

过程:

1-创建模块化项目

以.jar格式打包项目

3—使用Jlink工具创建一个定制的运行时映像(以减少输出的大小)

4-使用jpackage工具(它接受2和3作为输入)

我也想知道我是否可以依靠Intellij工件来创建.jar文件(2步)是否使用特定的插件更好?

最后一件不清楚的事情是我们是否需要在.jar文件中包含依赖项?因为我相信它们将包含在定制的运行时中,不是吗?

如果你看一下这里,有一个关于如何从包含Maven插件的模板开始创建JavaFX项目的解释,以便使用jlink轻松打包应用程序。

这样做将允许您完全依赖IntelliJ,使事情变得更容易。

一旦你有了你的运行时映像,你可以用jpackage打包它。这里已经有关于这个话题的讨论了。

这里有一个快速链接到那里提到的文章。这里的文章展示了使用Gradle,但是您也可以使用Maven做同样的事情,只需使用适当的插件(jpackage-maven-plugin,如这里的另一个答案所述)。

另外,从你的评论中我可以读到,你似乎有模块化和非模块化的依赖关系。在这种情况下,您可以使用jdeps来实现所需的功能。这里有一篇关于混合依赖的好文章,特别使用JavaFX作为非模块化应用程序中的模块化库的例子。

只要看看这里https://github.com/dlemmermann/JPackageScriptFX的教程与一个工作的例子。它对于非模块化项目特别有用。

我使用jpackage maven插件构建本机可执行文件(https://search.maven.org/artifact/org.panteleyev/jpackage-maven-plugin)。首先必须使用maven-javafx-plugin创建一个jlink运行时映像(https://github.com/openjfx/javafx-maven-plugin)。然后,您将在jpackage plugin(…)中使用该运行时映像。.应该可以成功创建一个可执行文件。

jpackage工具不需要模块化项目。虽然如果你的项目不是模块化的,那么你的项目将混合由于JavaFX是模块化的。在这种情况下,您将添加JavaFX模块到自定义运行时映像,同时告诉jpackage将您的代码视为非模块化(即,它将配置可执行文件以将您的代码放在类路径上)。

您也可以将步骤3和步骤4合并为一个步骤。jpackage工具可以生成自定义运行时映像。它将使用jlink"在幕后"。

至于代码需要采用什么格式,在我看来,将其打包到JAR文件中是最直接的方法。但我不确定这是严格要求的。

应用程序的任何依赖项当然需要包含在最终的应用程序中。如果这些依赖项是模块化的,那么您可以通过自定义运行时映像包含它们。但是如果你想让它们在类路径上,那么你可以像你的代码一样包含它们(即--input)。

注意jpackage工具有一个用户指南:https://docs.oracle.com/en/java/javase/16/jpackage/packaging-overview.html

相关内容

最新更新