首页 > 解决方案 > 有没有办法在 IntelliJ IDEA 中使用 jlink 来创建自定义模块化运行时映像?

问题描述

我正在关注 IntelliJ IDEA 2018.2.5 中的Project Jigsaw:模块系统快速入门指南在链接器部分之前,我在 IDE 中做的一切都是正确的。有没有办法在 IntelliJ IDEA 中使用 jlink?

jlink(参见JEP 282)是链接器工具,可用于链接一组模块及其传递依赖项,以创建自定义模块化运行时映像(参见JEP 220)。
- Project Jigsaw:模块系统快速入门指南

我在JetBrains Bug & Issue Tracker中发现了产生 JLink artefacts问题的能力,但它已经开放了 2 年多,甚至没有描述。


作为一种解决方法,我看到了这个Is there a maven jigsaw jlink plugin? 有趣的问题和最有希望的替代方案似乎是Apache Maven JLink 插件,但它也已经存在了 2 年多,还没有发布。

标签: javamavenintellij-ideajava-platform-module-systemjlink

解决方案


您可以使用 Ant 作为构建工具并指定您自己的 jlink 目标,如下所示:

<target name="link">
    <echo message="Creating jlink image in directory = dist\bin\java" />
    <exec executable="jlink">
        <arg line='--module-path bin;"C:\Program Files\Java\jdk-11.0.1-Linux\jmods";"C:\Users\VTorroni\_libs\hsqldb-2.4.1\modules";"C:\Users\VTorroni\_libs\tinylog-1.3.5\module";"C:\Users\VTorroni\_libs\javax.servlet-api-4.0.1\module\javax.servlet.api-4.0.1.jar" --add-modules pnode --output dist\bin\java --strip-debug --no-header-files --no-man-pages --compress=2' />
    </exec>
</target>

推荐阅读