Eclipse内置jar导出选项与Maven组装插件



我使用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正在清单文件中生成一个"类路径:"条目。尝试通过添加以下内容来更新.pom文件中的assembly conf:

<addClasspath>true</addClasspath>

默认情况下,maven汇编插件不会捆绑您自己的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

直接运行程序。

相关内容

  • 没有找到相关文章

最新更新