我有一个使用程序集插件的maven项目,其中包括项目依赖项。
其中一个依赖项在pom中声明为:
<dependency>
<groupId>com.oracle.sqlj</groupId>
<artifactId>runtime12</artifactId>
<version>11.1.0.0.0</version>
<scope>compile</scope>
</dependency>
该项目的pom还有一个父pom,必须包括在内,但我无法改变。在那里,是:
<dependency>
<groupId>com.oracle.sqlj</groupId>
<artifactId>runtime12</artifactId>
<version>10.1.0.2.0</version>
<scope>compile</scope>
</dependency>
汇编插件的xml中的依赖项声明如下:
<dependencySets>
<dependencySet>
<outputDirectory>etc/lib</outputDirectory>
<useProjectArtifact>false</useProjectArtifact>
<!-- INCLUDE ALL DEPENDENCIES -->
<includes></includes>
</dependencySet>
</dependencySets>
当运行程序集阶段时,依赖的版本10.1.0.2.0被打包,而不是11.1.0.0.0,我希望覆盖它,因为它实际上是在编译阶段在组装之前。
我在这里犯了错误吗?或者如果没有,是否有任何方法可以强制装配阶段更喜欢在儿童pom而不是父母中声明的依赖性?我用Google搜索了,但到目前为止空了......
答案 0 :(得分:0)
我认为正确的方法应该是将父级更改为使用标记dependencyManagement
而不是依赖项,让子项目使用此依赖项或相互设置。
但显然你不能改变父母。
因此,您应该更改程序集描述符的dependencySet
配置。使用标记excludes
排除不需要的工件。
您可以在此处阅读汇编描述符的手册参考: https://maven.apache.org/plugins/maven-assembly-plugin/assembly.html