2016-04-19 29 views
4

我正在使用Maven項目,其中我有Spring框架依賴項版本3.2.3.RELEASE,而且我必須將此項目導入許多其他項目在其中一些中,我正在使用彈簧4.如何在父項目中存在更新版本的情況下排除Maven依賴關係

只有在使用我的項目具有相同或更新版本的彈簧以及未使用我的彈簧的情況下,我如何排除此依賴關係(彈簧3) ?

+0

請參閱[Maven:如何覆蓋由庫添加的依賴項](http://stackoverflow.com/questions/3937195/maven-how-to-override-the -dependency-by-a-library)和[Override parent pom dependency](http://stackoverflow.com/questions/28770922/override-parent-pom-dependency)。 –

回答

1

一兩件事你可以做的是手動排除不必要的依賴關係:

<dependency> 
     <groupId>com.your.project</groupId> 
     <artifactId>project-name</artifactId> 
     <version>1.0.0</version> 
     <exclusions> 
      <exclusion> 
       <artifactId>org.springframework</artifactId> 
       <groupId>spring-core</groupId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

但是,可以得到相當冗長。

如果您詳細說明問題描述,可能會有所幫助,因爲我不清楚您究竟在解決或實現什麼目標。

例如,如果您包含依賴項A,該依賴項在版本1.0中具有依賴關係B,然後在1.1中包含B在您的pom中,Maven將只使用1.1。我建議讀一下這裏:https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Transitive_Dependencies

+0

好吧,你已經總結出來了,那就是我正在嘗試做的事情。但是如果我有一個在POM中聲明瞭彈簧老版本的B版本,並且在POM中聲明瞭彈簧3或更新版本的A版本。 如果我添加項目A到B的POM Maven將使用彈簧的舊版本,我是對嗎? –

+0

是的。這就是我的理解。我最近需要爲Jackson依賴關係做類似的事情,其中​​父代定義了2.7,但是一個庫(wiremock)需要2.6,所以我將2.6定義爲相關模塊中連線旁邊的依賴關係。 –

相關問題