2013-10-22 54 views
0

什麼是放置平臺/架構信息的最佳地點?在Maven工件中編碼體系結構的最佳實踐?

我的誘惑是由前綴架構代號的版本,使用的版本領域,因爲這似乎是最簡單的通配符,也將防止意外混合和不同平臺的匹配:

version = <architecture>-<version>[-<branch>] 

或者,可以將體系結構附加到工件ID:

artifactId = <name>-<architecture> 

兩種方式都會導致相同的工件名稱。

其他人做了什麼,爲什麼?

回答

1

如果您正在獨立開發不同架構,這些解決方案中的任何一種都可能是好的。不過,您可能會遇到這樣的情況,即版本號在不同體系結構中是相同的。如果你正在爲相同的代碼庫構建不同的體系結構,例如,要麼你有一個內置於不同可分配內容的工件,或者你擁有不同的工件,這些工件依賴於相同的公用內核。在這種情況下,您不希望使用體系結構或分支信息來污染版本號,因爲它會使Maven無法將其視爲相同的版本。爲此建議的解決方案是使用分類器。由於每Maven POM Reference

分類: 分類器允許區分是 來自同一POM建造,但其含量不同的工件。這是一些 可選和任意的字符串,如果存在的話,會附加到版本號後面的 工件名稱。

至於該元素的動機,例如考慮一個項目, 提供了一個假象目標JRE 1.5,但同時也是一個 神器仍然支持JRE 1.4。第一個工件可以是 ,配備分類器jdk15,第二個工件可以是jdk14如 ,客戶可以選擇使用哪一個。

+0

使用體系結構作爲分類器的一個問題是,體系結構之間的打包和依賴關係可能會有所不同。我看到你仔細地提到「從同一個POM構建」,但通常情況並非如此。如果可以合併POM,這將是_nice_,但是我擔心我們必須將體系結構編碼到版本中。 –

+0

使用不同的分類器並不排除您使用不同類型(以解決包裝的差異)。我同意,依賴關係的差異可能會成爲一個突破點,而不是如此多地使用「分類器」,而是在「從同一個POM構建」中,正如你所觀察到的那樣。 –

+0

也許我使用的是發佈ant任務錯誤,但我的觀察是,如果我使用分類器和不同的打包類型,最後一次上傳「勝出」併爲整個集合聲明打包類型,這有效地呈現使用不同的體系結構包裝類型通過maven'y方法無法訪問(如果您知道url或自己構建url,您仍可以獲取它們,但POM不會顯示它們)。 –