首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在maven- jlink插件中配置jlink命令的--输出?

如何在maven- jlink插件中配置jlink命令的--输出?
EN

Stack Overflow用户
提问于 2022-02-24 20:11:33
回答 2查看 247关注 0票数 0

我正试图使用maven-jlink-plugin生成一个JRE,就像使用jlink命令一样。我开始做这样的maven配置:

代码语言:javascript
复制
    <plugin>
        <artifactId>maven-jlink-plugin</artifactId>
        <version>3.1.0</version>
        <extensions>true</extensions>
        <configuration>
            <goal>jlink</goal>
            <compress>2</compress>
            <noHeaderFiles>true</noHeaderFiles>
            <noManPages>true</noManPages>
            <output>${project.build.directory}/jre</output>
            <addModules>
                <addModule>java.compiler</addModule>
                <addModule>java.datatransfer</addModule>
                <addModule>java.desktop</addModule>
                <addModule>java.instrument</addModule>
                <addModule>java.logging</addModule>
                <addModule>java.management</addModule>
                <addModule>java.naming</addModule>
                <addModule>java.prefs</addModule>
                <addModule>java.rmi</addModule>
                <addModule>java.scripting</addModule>
                <addModule>java.sql</addModule>
                <addModule>java.xml</addModule>
                <addModule>jdk.compiler</addModule>
                <addModule>jdk.unsupported</addModule>
            </addModules>
        </configuration>
    </plugin>

但是,我在文档化:https://maven.apache.org/plugins/maven-jlink-plugin/jlink-mojo.html中找不到任何元素

虽然maven没有抱怨我的<output>,但它没有生成任何东西。

我的命令行版本如下所示:

代码语言:javascript
复制
%JAVA_HOME%\bin\jlink --no-header-files --no-man-pages --compress=2 --module-path %JAVA_HOME%\jmods --add-modules java.base,java.compiler,java.datatransfer,java.desktop,java.instrument,java.logging,java.management,java.naming,java.prefs,java.rmi,java.scripting,java.sql,java.xml,jdk.compiler,jdk.unsupported --output target\jre
EN

回答 2

Stack Overflow用户

发布于 2022-02-24 21:57:53

显然,jlink maven插件并不打算这样做。要使用jre输出运行命令jlink,maven antrun插件适合这样做:

代码语言:javascript
复制
    <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
            <execution>
                <phase>package</phase>
                <configuration>
                    <target>
                        <link compress="2" includeHeaders="false" modulepath="${java.home}/jmods"
                            includeManPages="false" debug="false" destDir="target/jre">
                            <module name="java.compiler"/>
                            <module name="java.datatransfer"/>
                            <module name="java.desktop"/>
                            <module name="java.instrument"/>
                            <module name="java.logging"/>
                            <module name="java.management"/>
                            <module name="java.naming"/>
                            <module name="java.prefs"/>
                            <module name="java.rmi"/>
                            <module name="java.scripting"/>
                            <module name="java.sql"/>
                            <module name="java.xml"/>
                            <module name="jdk.compiler"/>
                            <module name="jdk.unsupported"/>
                        </link>
                    </target>
                </configuration>
                <goals>
                    <goal>run</goal>
                </goals>
            </execution>
        </executions>
        <dependencies>
            <dependency>
                <groupId>org.apache.ant</groupId>
                <artifactId>ant</artifactId>
                <version>1.10.12</version>
            </dependency>
        </dependencies>
    </plugin>
票数 1
EN

Stack Overflow用户

发布于 2022-05-03 15:01:48

对我来说,这是可行的:

代码语言:javascript
复制
    <build>

      <pluginManagement>
        <plugins>
          <plugin>
            <groupId>com.github.akman</groupId>
            <artifactId>jlink-maven-plugin</artifactId>
            <version>0.1.8</version>
            <configuration>
              <modulepath>
                <dependencysets>
                  <!-- add project dependencies to modulepath -->
                  <dependencyset>
                    <!-- add project output (module) to modulepath -->
                    <includeoutput>true</includeoutput>
                    <!-- exclude automatic modules -->
                    <excludeautomatic>true</excludeautomatic>
                  </dependencyset>
                </dependencysets>
              </modulepath>
              <noheaderfiles>true</noheaderfiles>
              <nomanpages>true</nomanpages>
              <compress>
                <compression>ZIP</compression>
              </compress>
              <stripdebug>true</stripdebug>
              <addmodules>
                <addmodule>java.base</addmodule>
                <addmodule>java.xml</addmodule>
              </addmodules>
            </configuration>
          </plugin>
        </plugins>
      </pluginManagement>


        <plugins>
          <plugin>
            <groupId>com.github.akman</groupId>
            <artifactId>jlink-maven-plugin</artifactId>
            <executions>
              <execution>
                <phase>verify</phase>
                <goals>
                  <goal>jlink</goal>
                </goals>
              </execution>
            </executions>
          </plugin>        
....
...

mvn clean compile package

mvn jlink:jlink

结果是在target/jlink文件夹中(对我来说大约是28 me)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71257710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档