2010-10-04 31 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