繁体   English   中英

Eclipse内置jar导出选项vs Maven程序集插件

[英]Eclipse built-in jar export option vs Maven assembly plugin

我使用IntelliJ IDEA生成一个带有maven-assembly-plugin的jar文件。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>3.1.0</version>
    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <archive>
            <manifest>
                <mainClass>test.LeanFTest</mainClass>
            </manifest>
        </archive>
        <finalName>${project.artifactId}-fatjar-${project.version}</finalName>
        <appendAssemblyId>false</appendAssemblyId>
    </configuration>
</plugin>

它不起作用,它在执行期间不断询问依赖性。 我无法使用jar文件,因此我将项目导入Eclipse并使用了内置的jar导出选项。 这罐子工作正常。 我找不到这些jar文件之间的区别。

原因可能是Eclipse在清单文件中生成了“Class-Path:”条目。 尝试通过添加类似(按心,未选中)的方式更新.pom文件中的程序集conf:

<addClasspath>true</addClasspath>

默认情况下,maven-assembly-plugin不会捆绑您自己的jar独立运行所需的所有依赖项。

因此,您需要在插件配置下添加以下内容:

<descriptorRefs>
    <descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>

结果,插件标签变为:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>3.1.0</version>
    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <archive>
            <manifest>
                <mainClass>test.LeanFTest</mainClass>
            </manifest>
        </archive>
        <finalName>${project.artifactId}-fatjar-${project.version}</finalName>
        <appendAssemblyId>false</appendAssemblyId>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef> <!-- the secret -->
        </descriptorRefs>
    </configuration>
</plugin>

你可以运行:

java -jar path/to/LeanFTest.jar

直接运行程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM