重新打包依赖并修复pom

时间:2013-11-17 16:01:22

标签: java maven maven-2 maven-3 maven-plugin

我的maven项目有依赖性。我使用了一些第三方课程。我想自动将它们重新打包到我的jar中,并从存储在jar文件中的pom.xml中排除依赖项。

我检查了shade pluginjarjar plugin。他们都没有在生产的罐子里取代pom。什么是包含依赖关系'二进制文件,如果这些依赖项仍然列在pom中?我应该如何正确地重新包装依赖?

2 个答案:

答案 0 :(得分:1)

Maven shade插件具有您需要的功能。运行后

mvn shade:shade

它在您的projects文件夹中生成名为 dependency-reduced-pom.xml 的文件,并且此文件没有已放置在jar中的依赖项。

此行为是通过以下shade-plugin选项配置的:

答案 1 :(得分:0)

您可以使用maven-dependency-plugin:

           <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.8</version>
                <executions>
                    <execution>
                        <id></id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>unpack</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                              <artifactItem>
                                <groupId>commons-lang</groupId>
                                <artifactId>commons-lang</artifactId>
                                <version>2.6</version>   
                              </artifactItem>
                            </artifactItems>
                            <outputDirectory>${project.build.outputDirectory}</outputDirectory>
                            <includes>org\/apache\/commons\/lang\/StringUtils.class</includes>
                        </configuration>
                    </execution>
               </plugin>

然后将commons-lang的依赖范围设置为:

                       <dependency>
                            <groupId>commons-lang</groupId>
                            <artifactId>commons-lang</artifactId>
                            <version>2.6</version> 
                            <scope>provided</scope>
                       </dependency>

commons-lang不会作为传递依赖项携带,也不会包含在jar包装中,但StringUtils将包含在jar中。