【问题标题】:Parent build file in buildr构建器中的父构建文件
【发布时间】:2011-04-20 17:34:13
【问题描述】:

我目前正在考虑从 maven2 迁移到 buildr,我担心如何保持构建脚本 DRY。

目前我们的 maven 项目是使用包含所有常见构建代码的父 pom 文件定义的,并且像任何其他依赖项一样被拾取:

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

现在我正在查看 buildr,我注意到它确实有一个类似的概念,但它需要将构建文件放置在上一级,例如:

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

然而,这是一个问题,因为这些项目不相关,将被检出并完全分开构建。所以我的问题是:我如何最好地解决这个问题?如何在一次只能签出一个项目的同时引用通用构建文件?

【问题讨论】:

  • 只是为了兴趣:您为什么决定从 Maven 转向 buildr? (你能给出一些理由吗?)非常感谢。
  • 更小的构建脚本,充分利用 ruby​​ 和创建函数的能力,比这更重要的是速度:bit.ly/9lylOi(我自己测试过并且证明是准确的)

标签: maven-2 build-process buildr


【解决方案1】:

我觉得你很困惑:

一方面,您的项目现在与 Maven 一起构建,有 4 个不同的存储库,您可以在正确的位置签出或使用 svn:externals。这听起来是个坏主意。

另一方面,您想用 Buildr 做同样的事情,但担心它看起来不好?

请确实单独构建这些项目!如果您有可以从一个项目重用到另一个项目的代码,例如自定义任务,则在每个项目中使用 svn:externals 指向构建文件所需的 ruby​​ 文件。

【讨论】:

  • 它们都是我们单独构建的独立、不相关的项目。但总会有一些我们希望跨项目共享的常见任务(静态分析工具、部署任务等)。我可以使用 svn:externals 但我希望避免这种情况,因为这通常是不好的做法:bit.ly/9wN9yk
  • 我发现自己不同意上面博客中的大部分观点。其他 SCM 工具中存在等效解决方案,以实现与 SVN 外部相同的功能。有些点是不相关的,因为这正是在项目之间共享脚本代码。无论如何,听起来您找到了自己喜欢的解决方案,所以这很重要。
【解决方案2】:

我发现了这个问题的答案,并且我对它的简单性感到自责:创建一个 gem。

用 parent.rb 替换 parent-pom.xml 并将 ruby​​ 文件作为所有其他项目所需的 gem 分发。

【讨论】:

  • 许多人使用的另一种替代方法是通过版本控制系统使用 SVN 外部、Git 子模块、Git 辫子等功能共享文件。这种方法减少了打包和部署的需要一颗宝石。
猜你喜欢
  • 2010-11-19
  • 1970-01-01
  • 2014-09-04
  • 1970-01-01
  • 2020-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-11
相关资源
最近更新 更多