带有jlink压缩标记的Java9打包程序

Tia*_*tos 5 java jlink java-platform-module-system java-9 javapackager

当我们创建jlink运行时映像时,我们可以使用'--strip-debug',' - compress','2',' - no-header-files',' - no-man-pages'等标签,创建一个45mb左右的分发文件夹.

如果我们想使用javapackager,例如创建.DMG文件,我们如何进行类似的压缩?因为这些标签不适用于javapackager.没有它们,最终的捆绑包大约100mb,失去了很多java9模块化的优点,所以我的问题是,是否可以使用javapackager和jlink创建的JRE运行时映像.

谢谢

Tia*_*tos 4

回答我自己的问题,我们可以结合使用两者:

对于 MacOSX 示例:

1) 使用 jlink 生成运行时 dist,如果使用压缩标签,这将创建一个大约 50mb 的 lib 文件夹。

2)使用javapackager生成MacOSX.app,这个.app将带有一个大约98mb的运行时lib文件夹。

3)简单替换它们,右键单击MacOSX.app->“显示包内容”,然后转到Plugins/Java.runtime/Contents/Home/并将lib文件夹替换为jLink生成的文件夹。

这样,您就拥有了一个大约 50mb 而不是 100mb 的独立 Java 应用程序,这要归功于漂亮的 Java9 模块。

仅使用 javapackager 来完成所有这些工作会很酷,如果可能的话我找不到如何操作,我建议使用像 gradle 这样的东西用 1 个命令来执行所有这些过程。