2011-01-27 64 views
2

我們有一大批項目。它是使用ant目標構建的,它調用了一些單獨的Maven項目。構建快照vs本地編譯代碼的參數?

問題是,任何時候一位開發人員將代碼提交給我正在工作的一個單獨項目,我必須更新代碼並在本地重新構建,以確保我正在編譯最新的代碼。這包括每次等待30-60分鐘以測試代碼更改。

我們希望運行所有關閉「快照」罐子的項目,因此每次發生代碼更改時,我們的本地構建都應該簡單地下載最新的快照。

有人擔心,由於持續集成服務器需要花費一個多小時才能構建項目,因此我們的快照可能會比最新代碼晚一個小時,並且構建它們並不能保證我們的代碼編譯的準確性最新的。

這是一個常見的問題,如果是的話,它如何被緩解?我可以向我的團隊提供什麼好的論據,以獲得切換到使用快照的價值?

+0

我有點擔心你有30-60分鐘的構建週期。我們使用Maven構建一個巨大的遺留系統(用於使用Ant),我們的總時間大約爲7-10分鐘。我猜測你的測試可能會通過使用真正的外部依賴(比如數據庫)來做太多的工作。您應該考慮解決您的構建時間問題,以獲得更快的反饋週期。如果您嘗試此操作,整個Maven依賴項問題可能會消失。 – 2011-02-11 20:46:47

回答

1

如何讓任何改變組件接口的人也負責確保依賴於它的所有組件也能正常工作,即單個提交包含API更改,實現更改以及使所有其他組件生成所需的更改針對新版本。

這鼓勵對不兼容的API更改進行長時間的思考,並且在提交不再編譯的組件時,還會在版本控制中導致顯式衝突。

根據您的內部策略,您還可以使其可以接受引入新的API,同時將舊版本標記爲已棄用,同時仍然保留完整的功能;但是我發現對你的開發者有點不禮貌。

0

在確保代碼是最新的時候,小時代碼真的會成爲一種破壞行爲嗎?除非有重大改變或重寫,否則我不會看到一個改變會如何破壞其他一切。

我也看到你目前的情況是編譯每個構建需要大約30-60分鐘的所有依賴關係。把你的項目編譯成最近可用的版本不是很好,這會讓我假設5-10分鐘,然後繼續編程?

我也看不出主要變化是不是會破壞東西。當您將代碼與一小時以前的依賴關係構建簽入,然後該依賴關係更改爲破壞代碼的位置時,代碼仍然被破壞。發生修復時,您現在只是轉移。