我在一個web項目中使用了多個基於spring的maven倉庫,而且我遇到了子POM使用的依賴問題。避免子依賴使用Maven重寫父依賴3
我有這樣一個父POM:
<dependencyManagement>
<dependencies>
<!-- SPRING -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>4.3.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- SPRING SECURITY -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-bom</artifactId>
<version>4.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- SPRING BOOT -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.3.5.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- SPRING WS -->
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-core</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-security</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>
<!-- OTHER DEPENDENCIES OMITTED -->
</dependencies>
</dependencyManagement>
和一個孩子POM這樣的:
<dependencies>
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-security</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<!-- OTHER DEPENDENCIES OMITTED -->
</dependencies>
至於我的行家排斥的理解去,這應該避免的壓倒一切父POM版本,但由於spring-ws-security依賴於其方法已更改的較低版本的spring-core(4.0.9),因此我無法在Tomcat本地服務器上部署應用程序,原因是NoSuchMethodError異常,也可以在應用程序實際部署時觸發對老版本的核心版本的依賴依然存在。
我該如何避免這種壓倒性的依賴? 還是有一種使用這兩種依賴關係的方法(只要我搜索的是不安全的)?
鏈接訪問已:
Similar problem, but from child to parent,
短短几年提到,我去過其他人也卻忘了鏈接。
編輯:spring-ws依賴關係使用spring 4.0.9覆蓋4.3.0版本(我需要使用的版本)我在父POM中定義了它。
+- org.springframework.ws:spring-ws-core:jar:2.2.3.RELEASE:compile
[INFO] | | | +- org.springframework:spring-oxm:jar:4.3.0.RELEASE:compile (version managed from 4.0.9.RELEASE)
[INFO] | | | +- org.springframework:spring-web:jar:4.3.0.RELEASE:compile (version managed from 4.0.9.RELEASE)
[INFO] | | | \- org.springframework:spring-webmvc:jar:4.3.0.RELEASE:compile (version managed from 4.0.9.RELEASE)
請列出您正在獲取的庫的版本以及要獲取的版本。你可以運行'mvn dependency:tree'來列出依賴關係。 –
我列出了一些錯誤的依賴@AntonKoscejev –
因此根據你對Sundaraj的回答的評論,我不確定你到底想要達到什麼目的。你想讓這些彈簧工件成爲4.3或4.0版本嗎?由於你的父母,你得到4.3,但你說你不想讓孩子項目改變這個,所以你想得到4.3?但是spring-ws 2.2與彈簧4不兼容。3並且需要較舊的版本。所以你需要在child中使用4.0(在parent中定義或在child中重寫),或者你需要一些與spring 4.3兼容的spring-ws版本。你想要什麼幫助? –