Maven Assembly插件依赖版本范围

时间:2016-01-12 14:09:54

标签: maven dependencies pom.xml maven-assembly-plugin parent-pom

我有一个使用程序集插件的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搜索了,但到目前为止空了......

1 个答案:

答案 0 :(得分:0)

我认为正确的方法应该是将父级更改为使用标记dependencyManagement而不是依赖项,让子项目使用此依赖项或相互设置。

但显然你不能改变父母。

因此,您应该更改程序集描述符的dependencySet配置。使用标记excludes排除不需要的工件。

您可以在此处阅读汇编描述符的手册参考: https://maven.apache.org/plugins/maven-assembly-plugin/assembly.html