【发布时间】:2017-11-05 17:35:25
【问题描述】:
maven 是否有新的 Java 9 的插件jlink 我在网上搜索过,但无法从 maven 团队中找到任何官方的东西。
【问题讨论】:
标签: java maven java-9 java-platform-module-system jlink
maven 是否有新的 Java 9 的插件jlink 我在网上搜索过,但无法从 maven 团队中找到任何官方的东西。
【问题讨论】:
标签: java maven java-9 java-platform-module-system jlink
是的。在Github/maven-plugins 上为相同的创建一个已经取得了一些进展。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jlink-plugin</artifactId>
<version>3.0.0-SNAPSHOT</version>
</plugin>
其代码中的插件读取为适应提案中的JEP-282 和JEP-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。
【讨论】:
我正在开发 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)。
【讨论】:
有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>
【讨论】: