2010-10-15 54 views
1

我們在基於java的項目中擁有大約100個maven工件。這些工件分爲5種不同的產品。顯然其中一些是產品之間共享的。如何使用Maven和SVN實現穩定發佈

問題在於,如果您在svn中爲產品添加標籤以獲得發佈。標籤不穩定。因爲從屬共享模塊是快照,並且可以由其他人更改。

讓我們說:模塊A依賴於模塊B,它是快照版本。 我在SVN中標記模塊A以獲取版本或里程碑或... 稍後如果有人更改模塊B,則可能會影響標記版本。下一次,如果我嘗試構建標記版本,我將會破壞構建。

有什麼辦法可以解決這個問題嗎?

我不想使用配置文件停止快照更新。

謝謝所有。

回答

2

我不標記版本,如果它具有依賴性,哪個版本是快照。

+0

我同意鮑里斯。快照是開發版本,而不是發佈版本。所以如果你想有一個發佈版本,那麼你應該只使用發佈的依賴。 – 2010-10-15 12:56:22

1

的問題是,如果你在SVN的發佈標誌產品,標籤是不是穩定的,因爲相關共享模塊快照,他們可以通過別人(...)來改變有什麼辦法解決這個問題?

您確定了問題,答案很明顯:只有在執行發佈時才應使用固定版本。有兩個插件,可以幫助簡化整個過程:

但是底線是:在釋放(和標記)時修復你的版本以備以後再現。

+0

發佈插件是檢查快照依賴關係的最佳方法。 – Salandur 2010-10-15 14:08:51

+0

我甚至會說:這是檢查快照,將POM升級到固定版本,更改SCM信息,構建,提交,標記,碰撞到下一個快照,提交等最好的方法:) – 2010-10-15 14:15:35

0

即使我同意鮑里斯和帕斯卡爾有兩種方法。

  1. 您只創建一次每個構建。因此,您有用於調查錯誤的代碼(您需要希望該錯誤不在您的某個依賴項中)。但主要優點是,您只需一個二進制文件即可在所有環境中移動到生產環境。只有一個要求。該應用程序需要與環境無關。

  2. 標記包含所有快照的整個scm。當你構建代碼時,你必須檢查你的項目和所有的依賴關係。並以正確的順序構建它們,以便獲得完全相同的結果。如果涉及到多個SCM,這會使許多依賴關係變得單調乏味。

當然,你可以嘗試混合兩種方法。這樣你就可以標記你自己的項目和可選的依賴項。所有其他的依賴關係保留了所需的工件(包括用於安裝到本地存儲庫中的pom),以便您可以隨時重新運行構建。

這應該只是一個臨時解決方法,直到您設法只使用發佈的依賴關係。

0

如果您使用maven-release-plugin發佈組件,它將執行檢查依賴項並在遇到快照依賴項時停止構建。