如何使用maven在一个新jar中打包jar和所有依赖项

时间:2016-03-22 15:45:19

标签: java maven jar maven-assembly-plugin

我有一个十个依赖项的maven项目。在此之前,由于maven-assembly-plugin

,我以前将所有这些打包在一个罐子里
<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而不是编译器的结果?

1 个答案:

答案 0 :(得分:4)

尝试使用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>