2016-01-12 438 views
-1

我有一個使用程序集插件的Maven項目,其中包括項目依賴關係。Maven Assembly插件依賴版本範圍

一個依賴的是在聚甲醛爲地宣稱:
<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,我希望它會覆蓋它,因爲它實際上是在彙編之前的編譯階段。

我在這裏犯了一個錯誤嗎?或者,如果沒有,我有什麼辦法可以強制大會階段選擇在子項目中聲明的相關項目而不是父項目?我GOOGLE了,但到目前爲止空...

回答

0

我認爲正確的方法應該是改變父母使用標記dependencyManagement而不是依賴項,並讓子項目使用此依賴項或設置另一個。

但顯然你不能改變父母。

因此,您應該更改組裝描述符的dependencySet配置。使用標籤excludes排除不需要的工件。

您可以在這裏閱讀裝配描述符的手冊參考: https://maven.apache.org/plugins/maven-assembly-plugin/assembly.html