2017-02-17 56 views
2

我有開發人員在我的組織之外使用Maven父母。對於這種特殊的情況下,父親是彈簧引導啓動父Maven繼承和分發管理

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.4.1.RELEASE</version> 
    <relativePath/> <!-- lookup parent from repository --> 
</parent> 

他們的版本是工作,他們已經對這些相關測試了很長時間,我非常不希望改變他們的產業。

我作爲發佈工程師的問題是生成的工件需要存儲在內部的Maven存儲庫中。我們歷史上曾經通過一個Maven Parent來完成這個工作,該Maven Parent定義了所有的項目並且沒有其他的東西,所有的項目都作爲它們的繼承鏈的根源。

我最終可能會管理數百個POMS,而且我不想放在每個POM中,就好像我們必須移動內部Maven存儲庫一樣,我將不得不管理一些荒謬的項目來反映更改。

有什麼辦法可以設置我基本上沒有父母寫入權限的地方嗎?這可以在MAVEN_OPTS中設置,或者作爲CI服務器上的屬性文件進行設置?我嘗試使用properties-maven-plugin來輸入我們所有的屬性,但distributionManagement不會接受屬性作爲變量。

+0

我真的不明白你想達到的目標。您構建的工件應該轉到工件存儲庫,如Nexus或Artifactory。通常,它們將由構建服務器部署到該存儲庫。您也可以在Nexus/Artifactory中代理外部存儲庫,以便您擁有所有使用的父級poms的副本。 –

+0

開發團隊通常使用基本上定義我們的超級POM版本的父pom。在這種情況下,開發團隊使用的是spring-boot-starter-parent而不是「我們的」父項,因此它不會繼承與我們其他版本相同的內容。執行Maven發行版:執行無法部署,因爲無法找到版本庫(因爲沒有deploymentManagement集)。我希望能夠允許開發人員將外部父母(即不屬於)的父母用於組織,並且仍然能夠將他們發佈到我們的內部回購中。 – shaunSCM

回答

0

保持你的組織父POM(比你先前指定的parent元素等),就需要你把Spring Boot依賴作爲一個BOM:

<dependencyManagement> 
    <dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-dependencies</artifactId> 
     <version>1.4.1.RELEASE</version> 
     <type>pom</type> 
     <scope>import</scope> 
    </dependency> 
    </dependencies> 
</dependencyManagement> 

但我覺得不太侵入性的方式可能是要正確設置版本到你的模塊使用:

mvn versions:set建築文物和部署的Nexus(或其他的Maven回購經理)之前

+0

pom導入工作正常。 我現在能夠引入所有的spring-boot依賴關係,並使用詳細介紹Artifactory的公司POM。這不會在插件中引入依賴項,但對於我的場景來說這是可以接受的。 – shaunSCM