0

我有一个使用程序集插件的 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 中声明的依赖项而不是父项?我用谷歌搜索过,但到目前为止都是空的......

4

1 回答 1

0

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

但显然你不能改变父母。

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

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

于 2016-01-12T16:54:49.307 回答