java - 如何使用 maven 将 jar 和所有依赖项打包到新 jar 中

标签 java maven jar maven-assembly-plugin

我有一个 Maven 项目,有大约十个依赖项。之前,由于 maven-assemble-plugin,我曾经将所有这些打包在一个 jar 中:

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.4</version>
    <executions>
        <execution>
            <id>create-executable-jar</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
            <configuration>
                <descriptors>
                    <descriptor>assembly.xml</descriptor>
                </descriptors>
                <archive>
                    <manifest>
                        <mainClass>myApp.Main</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </execution>
    </executions>
</plugin>

但是现在,我之前添加了一个步骤。我有一个插件可以生成我的应用程序的 jar。所以我只想让程序集插件将依赖项添加到这个 jar 中。不幸的是,该插件不使用这个 jar,而是似乎使用了编译器的结果。

有没有办法指定我希望插件使用之前生成的 jar 而不是编译器的结果?

最佳答案

尝试使用 maven-shade-plugin。你需要这样的东西:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.3</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

关于java - 如何使用 maven 将 jar 和所有依赖项打包到新 jar 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36158965/

相关文章:

java - 如何在 session (Hybris)中设置B2B单位?

java - 检索 iASP RDB 名称以在 jdbc url 中指定它

java - java中如何使用Gson读取Json

java - 启动 jboss 服务器时未构建 Maven 依赖项

java - 从命令行编译带有两个 jar 的 java 文件?

java - 解压嵌套的 jar 文件 java

java - 为什么我的表格无法在我的卡中滚动?

Java maven Junit读取systemproperties变量来加载属性文件

java - Maven: Artifact 的权限被拒绝

java - Maven:settings.xml 中的存储库