2016-01-23 113 views
3

我有一個Maven multimodule項目,它的一些老版本的spring-boot-dependencies設置爲父pom.xml中的父項。所有的子模塊從這個主要的pom.xml繼承spring引導依賴。Maven和spring-boot-dependencies

這很好,但在一個新的子模塊(也是多模塊)中,我希望使用最新的彈簧啓動版本,而無需更改整個項目中正在使用的(與所有依賴關係)的版本。

有沒有辦法巧妙地重寫派生自父項的spring引導版本(及其所有依賴項)並在子模塊中使用不同的引用? 我試圖在所有新模塊的子模塊的pom.xml文件中的<spring-boot.version>屬性內設置彈簧引導的顯式版本,但沒有運氣。

回答

5

有沒有辦法巧妙地重寫派生自父項的spring啓動(及其所有依賴項)的版本,並在子模塊中使用不同的啓動項?

不會。當你使用Spring Boot的特定版本作爲父級(或祖父母等)時,你說這是你想要使用的Spring Boot的版本。

我試圖在所有新模塊的子模塊的pom.xml文件的屬性中設置spring boot的顯式版本,但沒有運氣。

如果這沒有工作,你會最終從春天啓動X版本的父與配置,如該版本一起依賴從春天啓動版本Y.版本的這種混合物可能導致怪Maven插件管理以及非常難以診斷的意外行爲。

如果你希望能夠混合和匹配的版本是這樣,你應該避免使用父從春天啓動,並應導入spring-boot-dependencies代替:

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <!-- Import dependency management from Spring Boot --> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-dependencies</artifactId> 
      <version>1.3.2.RELEASE</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 

這使您完全控制的版本在必須自己定義任何插件管理的成本。值得注意的是,你不能覆蓋導入的pom中的屬性。

+0

好吧,爲了確保我們在同一頁面上 - 所以一個導入替換了''標籤並進入主pom.xml(用於舊的spring引導依賴關係),第二個導入到新的子模塊重寫它,正確嗎?如果將此導入添加到新子模塊中很簡單,則第二個更改 - 主要是pom.xml - 似乎相當大......謝謝! – m52509791

+0

正確。第二個導入將覆蓋第一個導入。或者,您可以在父級中使用屬性作爲第一次導入,然後在子級中覆蓋該屬性。 –