首页 > 解决方案 > JLink:在单独的文件中导出 java 模块

问题描述

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

jlinkImage/
└──lib/
   └──modules

现在,我想进行增量构建:当我部署我的应用程序时,我只想上传自上次发布以来发生变化的模块。

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

例如

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

标签: javajava-9java-modulejava-platform-module-systemjlink

解决方案


在深入了解这个问题之后:

粗略的回答是否定的。这不是 JLink 的目的,它只是用来构建一个紧密的 JRE。

但是,JLink 生产的 JRE 仍然可以通过外部模块进行扩展。这里有一个简单的方法来分隔不同文件中的模块:

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

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

  1. 在 minimumJre 中添加一些模块 jar:
minimalJre/
└──modules/
   └── moduleA
   └── moduleB
   └── moduleC
  1. 启动它:

bin/java -p modules/ <other args>


推荐阅读