2010-10-04 142 views
1

我目前正在尋找從maven2遷移到構建器,我關心如何保持構建腳本幹。構建器中的父構建文件

目前我們的Maven項目是指包含所有共同構建代碼的父POM文件,並拿起像任何其他依賴:

<parent> 
    <groupId>com.companyname</groupid> 
    <artifactId>parent</artifactId> 
    <version>1.0.0</artifactId> 
</parent> 

現在我在看buildr,我注意到它有一個simular的概念,但它需要放置一個構建文件一個級別的了,例如:

/svnrepo/buildfile 
/svnrepo/ProjectA 
/svnrepo/ProjectB 

這是一個問題,但是,由於這些項目不相關的,將被檢查出來,完全分開建設。所以我的問題是:我如何最好地解決這個問題?如何在一次只能檢出一個項目的情況下引用通用構建文件?

+0

只是爲了興趣:爲什麼你決定從Maven轉移到buildr? (你能給出一些原因嗎?)很好,謝謝。 – khmarbaise 2010-10-04 11:03:42

+0

更小的構建腳本,充分利用紅寶石和創建函數的能力,比這更重要的是速度:http://bit.ly/9lylOi(我已經測試過自己並顯示爲準確的東西) – 2010-10-05 13:04:01

回答

1

我發現了這個問題的答案,我正在踢自己:它是多麼容易:創建一個寶石。

用parent.rb替換parent-pom.xml並將ruby文件分發爲所有其他項目所需的gem。

+0

許多人使用的另一種選擇是通過版本控制系統使用諸如SVN外部,Git子模塊,Git辮子等功能共享文件。這種方法減輕了打包和部署寶石的需要。 – 2010-10-06 14:19:02

0

我想你感到困惑:

一方面,你的項目現在使用Maven構建在一起,你看看在正確的地方,或使用SVN 4個不同的存儲庫:外觀等。這聽起來像個壞主意。

另一方面,你想用Buildr做同樣的事情,但擔心它看起來不會很好?

請確實分別建立這些項目!如果你的代碼可以從一個項目重用到另一個項目,比如自定義任務,那麼在每個項目中使用svn:externals指向構建文件需要的ruby文件。

+0

它們都是單獨的,我們單獨建立的無關項目。但是總會有我們想要跨項目共享的常見任務(靜態分析工具,部署任務等)。我可以使用svn:externals,但我希望避免這種情況,因爲它通常是不好的做法:http://bit.ly/9wN9yk – 2010-10-05 12:59:18

+0

我發現自己不同意上面博客中提到的大多數觀點。其他SCM工具中存在等價的解決方案,以實現與SVN外部相同的功能。而其中一些觀點並不相關,因爲這恰恰是關於在項目之間共享腳本代碼的。 無論如何,聽起來像是你找到了你喜歡的解決方案,所以這是非常重要的。 – 2010-10-06 14:23:20