【问题标题】:Is there a maven jigsaw jlink plugin?有 maven jigsaw jlink 插件吗?
【发布时间】:2017-11-05 17:35:25
【问题描述】:

maven 是否有新的 Java 9 的插件jlink 我在网上搜索过,但无法从 maven 团队中找到任何官方的东西。

【问题讨论】:

标签: java maven java-9 java-platform-module-system jlink


【解决方案1】:

是的。在Github/maven-plugins 上为相同的创建一个已经取得了一些进展。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jlink-plugin</artifactId>
    <version>3.0.0-SNAPSHOT</version>
</plugin>

其代码中的插件读取为适应提案中的JEP-282JEP-220

虽然这可能看起来像一个链接太多的答案。 @khmarbaise 在Github 上也有一个工作示例,它需要一个带有 -

的工具链
<configuration>
  <jdkHome>/Library/Java/JavaVirtualMachines/jdk1.9.0_ea+170.jdk/Contents/Home</jdkHome>
</configuration>

加上side note from the author 引用 -

目前不超过概念证明。这里的一切都是推测性的!

Edit1:- 正如在 cmets 中所分享的,可以在 @How to create a Java runtime with Maven 找到更多详细信息。

Edit2:- 日期为 2018 年 11 月 10 日,可以升级到使用 maven-jlink-plugin:3.0.0-alpha-1 并仍然使用 provide some valuable feedback

【讨论】:

  • 还期望共享示例的作者尽快纠正答案中的任何错误。 :)
  • 我在这里 ;-) ..你能告诉我配置 sn-p 的用途吗?
  • 这是先决条件,只是为了确保 toolchain.xml 配置在机器的 /.m2 文件夹中是合适的。
  • 更多相关信息:blog.soebes.de/blog/2017/06/06/…
【解决方案2】:

我正在开发 ModiTect,这是一种围绕 Java 9 模块的通用工具。 ModiTect Maven 插件的One of the goals 允许您通过 jlink 创建模块运行时映像:

<plugin>
    <groupId>org.moditect</groupId>
    <artifactId>moditect-maven-plugin</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <executions>
        <execution>
            <id>create-runtime-image</id>
            <phase>package</phase>
            <goals>
                <goal>create-runtime-image</goal>
            </goals>
            <configuration>
                <modulePath>
                    <path>${project.build.directory}/modules</path>
                </modulePath>
                <modules>
                    <module>com.example.module1</module>
                    <module>com.example.module2</module>
                </modules>
                <launcher>
                    <name>helloWorld</name>
                    <module>com.example.module1</module>
                </launcher>
                <outputDirectory>
                    ${project.build.directory}/jlink-image
                </outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

该插件目前正在积极开发中,暂时必须从源代码构建(将很快将第一个版本部署到 Maven Central)。

【讨论】:

  • ModiTect 1.0.0.Alpha1 现已在 Maven Central 上可用。
  • 只是想知道,为什么要在 maven 自己的插件上使用它? :)
  • ModiTect 背后的想法更像是一个完整的工作流程,您首先将模块描述符添加到您构建的 JAR 和/或其依赖项(假设它们还没有模块描述符),然后获取所有这个特别的模块化 JAR 来构建模块化运行时映像。
【解决方案3】:

mvn-jlink plugin允许调用jdeps和jlink(以及jdk提供的任何工具),也可以从ADOPT和LIBERICA下载和解压所需的openjdk版本,这样可以构建跨平台的图像

<plugin>
    <groupId>com.igormaznitsa</groupId>
    <artifactId>mvn-jlink-wrapper</artifactId>
    <version>1.0.0</version>
    <executions>
        <execution>
            <id>call-jlink</id>
            <goals>
                <goal>jlink</goal>
            </goals>
            <configuration>
                <jdepsReportPath>${project.build.directory}${file.separator}jdeps.out</jdepsReportPath>
                <output>${project.build.directory}${file.separator}preparedJDK</output>
                <addModules>
                    <module>java.compiler</module>
                </addModules>
                <options>
                    <option>--compress=2</option>
                    <option>--no-header-files</option>
                    <option>--no-man-pages</option>
                </options>
            </configuration>
        </execution>
    </executions>
</plugin>

【讨论】:

    猜你喜欢
    • 2013-08-14
    • 2021-03-28
    • 2012-12-18
    • 1970-01-01
    • 2018-04-16
    • 2017-01-22
    • 2010-12-12
    • 2016-09-29
    • 1970-01-01
    相关资源
    最近更新 更多