2010-11-16 20 views
0

我已經看到了幾個項目,我在該項目中使用profiles.xml和各種{username} .properties作爲開發人員沙箱設置,例如部署腳本的部署目錄,要運行的端口,數據庫和Web服務使用等等。現在Maven 3已經取消了對profiles.xml的支持,這讓我對這種做法提出了質疑。所以我有幾個問題:使用maven配置文件進行開發人員沙箱設置?

  1. 是否有更好的機制,而不是配置文件來實現這一目標?
  2. 如果不是,你覺得{username} .properties屬於scm嗎?有時(例如)服務URL更改時,我們忘記更新所有開發人員的屬性。
  3. 如果在scm中包含這些屬性文件並不是一個好主意,那麼對於開發人員沙箱之間常見的設置是否應該有某種配置文件繼承?這怎麼可能完成?
  4. 請注意,爲什麼Apache在Maven 3中刪除了對profiles.xml的支持?

回答

1

正如你所說,Maven 3只能刪除對外部profiles.xml文件的支持。您仍然可以在settings.xml中使用配置文件,並且一如既往地在pom.xml中使用配置文件。那些當前具有外部profiles.xml文件的項目應將這些配置移動到本地用戶的settings.xml文件中。

1)實際上沒有比配置文件配置更好的管理環境特定值的機制。

2)scm中的用戶屬性文件取決於您擁有的內容以及該信息是否對可能查看它的其他人敏感。如果你正確地構建你的源代碼樹,應該沒有問題將它存儲在SCM中。

3)在過去的其他項目中,我們在SVN標籤,中繼和分支旁邊保存了一個單獨的目錄,這些目錄的基本目錄包含了配置文件的模板(s)應該看起來像和開發人員文件夾和服務器目錄。在基本目錄中,開發人員可以在擁有自己的配置文件副本的developers目錄下創建/分支自己的目錄。這使他們能夠將更改合併到基本版本並更新「他們的」配置。這解決了很多這些服務URL更改,並允許他們按時完成。

4)不是線索。可以從Maven 1暫緩,他們想要刪除。

哦,別忘了,在Maven 2.2和3.0中,您可以在settings.xml中加密值。

0

是否有更好的機制,而不是配置文件來實現這一目標?

不,配置文件仍然是完美的。

如果不是,您覺得{username} .properties屬於scm嗎?有時(例如)服務URL更改時,我們忘記更新所有開發人員的屬性。

我通常會將用戶特定的屬性放在~/.m2/settings.xmlpom.xml文件中的常用屬性中。

如果在scm中包含這些屬性文件並不是一個壞主意,那麼對於開發人員沙箱之間常見的設置是否應該有某種配置文件繼承?這怎麼可能完成?

如果你想從繼承中受益,我的建議是使用maven <properties>

作爲一個方面說明,你知道爲什麼Apache在Maven 3中刪除了對profiles.xml的支持嗎?

profiles.xml的支持使得Maven內部變得複雜而且很難測試。而且由於在大多數情況下使用settings.xml是可接受的替代方案,因此profiles.xml已被刪除。請參閱following thread(特別是Jazon的消息)。

+1

將settings.xml用於用戶特定設置的問題在於,如果該設置是用戶和項目特定的(例如,開發人員可能擁有特定項目的沙箱數據庫),唯一的方法是使用屬性名稱在所有項目中都是唯一的(例如,項目A和項目B不能在settings.xml中具有db.url屬性)。我唯一能想到的其他事情是爲每個開發人員檢查不同的settings.xml,並使用mvn -s 。 – Keegan 2010-12-17 02:12:49

相關問題