2012-09-11 25 views
2

我們所有的項目都是使用maven構建的。 我們將一些主要配置集中在一個超級pom中。如何配置maven或eclipse以便在版本中使用RELEASE常量?

爲了始終有這樣的超級POM的更新版本(無需修改的版本),我們使用的語法如下:

<parent> 
    <groupId>my.organization</groupId> 
    <artifactId>superPom</artifactId> 
    <version>RELEASE</version> 
</parent> 

問題是Maven的Eclipse插件(M2E)沒有按不理解這個語法(RELEASE常量沒有解析)。 因此,我們的Eclipse用戶不能使用內置編譯。

你有什麼建議來克服這個問題?

順便說一句,我們已經嘗試了幾個選項,從maven的角度來看(especially those described here),但version.RELEASE是每個人(除了那些誰正在使用Eclipse)的最簡單的。

編輯: 我們的項目源被拆分成多個SVN倉庫。 這個超級pom是一個獨立的項目。它通過我們的Nexus服務器進行檢索。

回答

3

你正試圖進入錯誤的方向。 A release in maven is a particular version like 1.0.0,它表示您有該工件的已定義狀態。在你的情況下,你的超級pom有一個特定的狀態。如果您試圖將版本定義爲「RELEASE」,則表示我的版本總是相同,但實際上並非如此。

通常這樣一個超級pom會隨着時間的推移而變化,可以說今天你已經定義了一些特定的依賴版本(dependencyManagemet)。明天你改變這些定義。現在,在今天已經完成的構建中使用了超級pom的哪個狀態的1,000,000個問題?好吧,在這種簡單的情況下,你可以回答這個問題,但如果你昨天某個時候改變了超級pom,你就無法準確回答這個問題。

此外,如果您嘗試重新創建上週的工件,那麼您不能說在該特定時間使用了哪個超級pom的確切狀態,因爲您沒有指示器可以讓您有機會看到它。

這就是爲什麼你需要真正的版本像1.0.0或1.1.0的理由等

我能強烈電子書籍使用真正的版本像1.0.0等,而不是指「放」,將在Maven系統中使用它的corrdinate組,工件和版本蠕變。

+0

我完全同意你關於如何使用版本的觀點。 我其實不得不面對這種情況。 – Arno

+0

我認爲,我的解釋不夠準確:超級POM約束來自發布管理團隊。內容僅與RM(存儲庫,...)有關。 我不在乎這個配置是否改變。但我不希望開發人員花時間更新這個超級pom的版本。 我們嘗試了快照解決方案(如Yanflea提到的那樣),但是RM測試人員在測試新配置時多次打破了我們的構建。 – Arno

+0

使用版本更簡單,並且可以重現。 – khmarbaise

相關問題