需要解决以下依赖关系并将子依赖关系复制到特定位置。
<dependency>
<groupId>org.wildfly</groupId>
<artifactId>wildfly-ejb-client-bom</artifactId>
<version>${version.org.wildfly.wildfly-ejb-client-bom}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.wildfly</groupId>
<artifactId>wildfly-jms-client-bom</artifactId>
<version>${version.org.wildfly.wildfly-jms-client-bom}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
但是当我使用maven依赖插件复制时,只复制pom文件,而不是那些poms中定义的依赖项。
我的插件如下,
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.wildfly</groupId>
<artifactId>wildfly-ejb-client-bom</artifactId>
<version>${version.org.wildfly.wildfly-ejb-client-bom}</version>
<type>pom</type>
<outputDirectory>${project.build.directory}/Lib</outputDirectory>
</artifactItem>
<artifactItem>
<groupId>org.wildfly</groupId>
<artifactId>wildfly-jms-client-bom</artifactId>
<version>${version.org.wildfly.wildfly-jms-client-bom}</version>
<type>pom</type>
<outputDirectory>${project.build.directory}/Lib</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
任何线索?
答案 0 :(得分:0)
使用<scope>import</scope>
管理其他项目的依赖项。有关详细解决方案,请参阅Maven文档的this。
答案 1 :(得分:0)
我遇到了同样的问题,整整一天都在挣扎。范围<scope>import</scope>
仅适用于dependencyManagement
部分,我们在这里并不需要。答案很简单,让Maven dependency:copy-dependencies
plugin为您获取除pom
文件之外的所有传递依赖项。
当文档状态设置为<excludeTransitive>false</excludeTransitive>
和<excludeTypes>pom</excludeTypes>
时,就可以解决问题。
还有一种方法可以在没有pom插件配置的情况下,而是在命令行上进行此操作:
mvn --batch-mode --no-transfer-progress -f /path/to/your/pom.xml dependency:copy-dependencies -DexcludeTypes=pom -DoutputDirectory=/Lib
Here's a GitHub gist with a full example。由于Maven中excludeTransitives
的默认值为false,因此您的示例应该可以使用,但其中还包含pom文件。