使用JLink,我可以使用小型JVM构建应用程序。现在,构建是整体的:所有java模块都融合在一个文件中(可以使用jimage提取):

jlinkImage/
└──lib/
   └──modules


现在,我想进行增量构建:在部署应用程序时,我只想上载自上一发行版以来已更改的模块。

是否可以将JLink配置为在单独的文件中导出不同的Java模块?

例如

jlinkImage/
└──lib/
   └── moduleA
   └── moduleB
   └── moduleC

最佳答案

在深入研究这个问题之后:

大概的答案是不。
这不是JLink的目的,它仅用于构建紧密的JRE。

但是,JLink生产的JRE仍可以使用外部模块进行扩展。这是在不同文件中分隔模块的简单方法:


使用jlink生成最小的JRE,例如:


jlink --add-modules java.base,java.xml --output minimalJre


在minimalJre中添加一些模块jar:


minimalJre/
└──modules/
   └── moduleA
   └── moduleB
   └── moduleC



使用以下命令启动它:


bin/java -p modules/ <other args>

09-30 21:05