Java 打包配置文件时,jar中不包含依赖项
我正在尝试用java和maven构建一个cli应用程序,它在maven中包含两个profileJava 打包配置文件时,jar中不包含依赖项,java,maven,Java,Maven,我正在尝试用java和maven构建一个cli应用程序,它在maven中包含两个profileprofileName1和profileName2 我已运行以下命令,并尝试将jar与所有依赖项打包: mvn -P profileName1 clean package 我尝试了以下方法来处理: 过程1 档案名称1 com.sunkuet2.CommandLineInterface 档案名称1 但是上面没有包含jar文件的依赖项 过程2 档案名称1 com.sunkuet2.CommandLi
profileName1
和profileName2
我已运行以下命令,并尝试将jar与所有依赖项打包:
mvn -P profileName1 clean package
我尝试了以下方法来处理:
过程1
档案名称1
com.sunkuet2.CommandLineInterface
档案名称1
但是上面没有包含jar文件的依赖项
过程2
档案名称1
com.sunkuet2.CommandLineInterface
档案名称1
org.apache.maven.plugins
maven jar插件
真的
这也不包括jar文件的依赖项
有什么方法可以做到这一点吗?为什么需要两个配置文件?为什么不使用maven assembly插件(带依赖项的jar或maven shade插件)?
尝试用所有依赖项打包jar
。您所做的只是:将主类添加到清单并更改JAR名称(流程1),将依赖项添加到清单(流程2)@khmarbaise,我使用了maven汇编插件
,这会生成一个包含所有依赖项的JAR,但它也会创建一个没有任何依赖项的JAR。不知道为什么:(@sunkuet02,基本上Maven构建将始终为您的项目生成一个“简单”的JAR。如果您还想生成一个JAR(或任何其他工件)对于它的所有依赖项,您必须为此使用一个插件,例如khmarbaise提到的maven assembly插件。这将生成另一个JAR,通常带有特定的分类器。要调整此行为,请查看:如果您定义了打包JAR
,则将创建没有依赖项的默认JAR。如果您使用maven assembly插件,它将创建一个带有依赖项的jar作为补充工件。简单jar文件有什么问题?如果您想避免这一问题,最好是创建一个单独的模块(dist),其中包含带有依赖项的jar配置和打包pom
。。。
<profiles>
<profile>
<id>profileName1</id>
<properties>
<main.class>
com.sunkuet02.CommandLineInterface
</main.class>
<jar.name>profileName1</jar.name>
</properties>
</profile>
</profiles>
<profiles>
<profile>
<id>profileName1</id>
<properties>
<main.class>
com.sunkuet02.CommandLineInterface
</main.class>
<jar.name>profileName1</jar.name>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>