我的maven项目有依赖性。我使用了一些第三方课程。我想自动将它们重新打包到我的jar中,并从存储在jar文件中的pom.xml中排除依赖项。
我检查了shade plugin和jarjar plugin。他们都没有在生产的罐子里取代pom。什么是包含依赖关系'二进制文件,如果这些依赖项仍然列在pom中?我应该如何正确地重新包装依赖?
答案 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中。