Java9 带有 jlink 压缩标签的打包器
Java9 packager with jlink compress tags
当我们创建 jlink 运行时映像时,我们可以使用诸如“--strip-debug”、“--compress”、“2”、“--no-header-files”、“--no-”之类的标签man-pages' ,创建一个大约 45mb 的分发文件夹。
如果我们想使用javapackager,比如创建一个.DMG文件,我们如何做类似的压缩?因为这些标签不适用于 javapackager。没有它们,最终的包大约是 100mb,失去了很多 java9 模块化优势,所以我的问题是是否可以将 javapackager 与 jlink 创建的 JRE 运行时映像一起使用。
谢谢
回答我自己的问题,我们可以使用两者的组合:
对于 MacOSX 示例:
1) 使用 jlink 生成运行时 dist,如果使用压缩标签,这将创建一个大约 50mb 的 lib 文件夹。
2) 使用 javapackager 生成 MacOSX.app,此 .app 将附带一个大约 98mb 的运行时库文件夹。
3) 简单替换,右击MacOSX.app-> "show package contents",然后进入Plugins/Java.runtime/Contents/Home/,将lib文件夹替换为生成的lib文件夹jLink.
这样你就有了一个独立的 Java 应用程序,大约 50mb 而不是 100mb,多亏了漂亮的 Java9 个模块。
仅使用 javapackager 完成所有这些工作会很酷,如果可能的话我找不到方法,我建议使用类似 gradle 的东西通过 1 个命令执行所有这些过程。
您可以将选项传递给 JDK 9 javapackager
传递给 jlink 进程。
控制jlink的javapackager选项
-BjlinkOptions=compress=2
or
-BjlinkOptions=strip-debug
我不知道如何同时通过。
-BjlinkOptions="compress=2 strip-debug"
导致 java.lang.IllegalArgumentException
-BjlinkOptions="strip-debug compress=2"
与-BjlinkOptions=strip-debug
的结果相同
When the option -BjlinkOptions=...
is passed multiple times to javapackager, only the last one is taken into account.
jlink 选项 no-header-files
和 no-man-pages
在这里似乎无效,因为它们在 -BjlinkOptions=
之后传递时会导致 NPE。
当我们创建 jlink 运行时映像时,我们可以使用诸如“--strip-debug”、“--compress”、“2”、“--no-header-files”、“--no-”之类的标签man-pages' ,创建一个大约 45mb 的分发文件夹。
如果我们想使用javapackager,比如创建一个.DMG文件,我们如何做类似的压缩?因为这些标签不适用于 javapackager。没有它们,最终的包大约是 100mb,失去了很多 java9 模块化优势,所以我的问题是是否可以将 javapackager 与 jlink 创建的 JRE 运行时映像一起使用。
谢谢
回答我自己的问题,我们可以使用两者的组合:
对于 MacOSX 示例:
1) 使用 jlink 生成运行时 dist,如果使用压缩标签,这将创建一个大约 50mb 的 lib 文件夹。
2) 使用 javapackager 生成 MacOSX.app,此 .app 将附带一个大约 98mb 的运行时库文件夹。
3) 简单替换,右击MacOSX.app-> "show package contents",然后进入Plugins/Java.runtime/Contents/Home/,将lib文件夹替换为生成的lib文件夹jLink.
这样你就有了一个独立的 Java 应用程序,大约 50mb 而不是 100mb,多亏了漂亮的 Java9 个模块。
仅使用 javapackager 完成所有这些工作会很酷,如果可能的话我找不到方法,我建议使用类似 gradle 的东西通过 1 个命令执行所有这些过程。
您可以将选项传递给 JDK 9 javapackager
传递给 jlink 进程。
控制jlink的javapackager选项
-BjlinkOptions=compress=2
or
-BjlinkOptions=strip-debug
我不知道如何同时通过。
-BjlinkOptions="compress=2 strip-debug"
导致 java.lang.IllegalArgumentException
-BjlinkOptions="strip-debug compress=2"
与-BjlinkOptions=strip-debug
When the option -BjlinkOptions=...
is passed multiple times to javapackager, only the last one is taken into account.
jlink 选项 no-header-files
和 no-man-pages
在这里似乎无效,因为它们在 -BjlinkOptions=
之后传递时会导致 NPE。