我试图找出如何将所有依赖项复制到explicite版本以及所有必需的依赖项。
例如:我的项目需要第三方库的第3版,名为foobar。 我想将版本3库复制到名为lib-foobar的文件夹 - $ {foobar.version}。 在这个文件夹中是那些需要在版本3中使用foobar的jar。这意味着jar本身和所有在foobar pom中声明的相关jar。
我目前在阶段包中使用org.codehaus.mojo:maven-dependency-plugin:2.1和目标拷贝依赖项。 我的配置是
<configuration>
<outputDirectory>${project.build.directory}/lib-foobar-${foobar.version}</outputDirectory>
<includeGroupIds>com.foobar</includeGroupIds>
<excludeTransitive>false</excludeTransitive>
<excludeScope>test</excludeScope>
<includeScope>compile</includeScope>
</configuration>
我不想列出所有允许的和不允许的lib,因为每个月都会有一个较新版本的步骤。
还有其他工具可以做到这一点,还是有任何闪避? 谢谢你的回复!
答案 0 :(得分:3)
非常感谢user944849。
在这种情况下找到最佳解决方案对我非常有帮助。
对于对我的解决方案感兴趣的每个人,都来了:
起初我将插件更改为maven-assemby-plugin并添加了一个新的程序集文件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<dependencies>
<dependency>
<groupId>com.foobar</groupId>
<artifactId>foobar-parent</artifactId>
<version>${foobar.version}</version>
<type>pom</type>
</dependency>
</dependencies>
<executions>
<execution>
<id>copy-foobar</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>src/assemble/foobar-libs.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
汇编文件如下:
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>standalone</id>
<formats>
<format>dir</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<includes>
<include>org.foobar</include>
</includes>
<outputDirectory>/lib-foobar-${foobar.version}</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
<useTransitiveFiltering>true</useTransitiveFiltering>
<unpack>false</unpack>
</dependencySet>
</dependencySets>
</assembly>
密钥是<useTransitiveFiltering>
元素,它根据包含的库解析所有传递库。