Java 打包配置文件时,jar中不包含依赖项

Java 打包配置文件时,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

我正在尝试用java和maven构建一个cli应用程序,它在maven中包含两个profile
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>