我正在尝试将项目及其子模块的所有依赖项复制到特定文件夹(假设是parent/target/lib)
该项目是这样的:
parent
|- module1
|- module2
|- module3
|- module3.1
|- module3.2
|- module4
据我了解,唯一的方法是在每个子模块中使用 Maven 复制依赖项,如下所示:
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<includeScope>runtime</includeScope>
<outputDirectory>${parent.dir}/target/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
<excludeGroupIds>xerces</excludeGroupIds>
<excludeArtifactIds>junit,testng,easymock</excludeArtifactIds>
</configuration>
</execution>
但是我遇到了多个问题:
- lib 文件夹将包含 Artifact 的所有版本(我只想要最新版本)
- 对于每个包含/排除规则,所有 pom 都需要更新(有很多)
是否有一些东西可以与 dependency:list 一起使用来获取所有依赖项,保留最新的并将它们复制到我的/lib 文件夹中?
最佳答案
我最终在一个新的子项目中使用了程序集插件,如下所示:
parent
|- module1
|- module2
|- module3
|- module3.1
|- module3.2
|- module4
|- assembly-module
程序集模块调用maven- assembly-plugin (pom.xml):
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<descriptor>src/assembly/bin.xml</descriptor>
<finalName>module-assembly</finalName>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
最后我的程序集文件如下所示( assembly-module/src/assembly/bin.xml )
<id>bin</id>
<formats>
<format>dir</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
<scope>runtime</scope>
<useProjectArtifact>false</useProjectArtifact>
<includes/>
<excludes>
<exclude>org.eclipse.jdt:core</exclude>
</excludes>
</dependencySet>
</dependencySets>
关于java - 将子项目 pom 中的所有 Maven 依赖项复制到目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24783044/