如何用ant支持多种构建配置?

时间:2011-04-13 19:12:34

标签: configuration ant build

我想知道使用ant支持多个构建版本的最佳方法是什么。在我目前的项目中,我有3个环境(开发,测试,生产)。有2个生产服务器具有不同的配置(不同的数据库,活动目录,Web服务URL等)。一次至少运行2个测试版本。还有一些其他配置选项仅用于测试具有启用/禁用功能的行为。

如何使用ant处理它?<​​/ p>

目前我们有一些目录,其中包含每个配置的文件集(persistence.xml,datasource,web.xml,jboss特定文件,几个应用程序属性文件...),这些文件在构建期间被复制到正确的目录中(它是变为A LOT,并且在所有配置中可见变化要求我们更改所有配置的文件。) 有一些任务,比如build-moduleA-dev,build-moduleB-dev,build-moduleA-test ......

通常,构建过程如下所示:

  1. 加载构建属性
  2. 将服务器类编译为build dir
  3. 将web类编译为build dir
  4. 构建界面(gwt)
  5. 将静态资源和正确的配置文件复制到build dir
  6. 制作耳朵/战争/罐子
  7. 所以,我想知道:

    • 如何使其更简单?
    • 保留单独的文件或使用替换任务更好吗?
    • 你是怎么做到的?

1 个答案:

答案 0 :(得分:3)

如果你已经这样做了,你不清楚你写的是什么,但你应该为每个环境生成相同的构建工件,然后可以通过不同的环境作为构建管道的一部分来提升。

就您的每个环境配置而言,您可以将它们视为构建工件,区别在于每个环境都有不同的人工制品。另一种方法是将配置存储在数据库或LDAP中,应用程序在启动时加载。但是,通常有一些环境配置无法存储在DB或LDAP中,至少是DB或LDAP来从中获取环境配置。

然后,特定环境的部署过程取决于构建工件和该环境的配置工件。我已经使用Apache Ivy和Ant来管理这些依赖项(以及普通的依赖项),我强烈推荐它。

同样,对于您的部署过程,您应该使用PuppetCfEngine之类的内容。它们允许您对您的环境执行幂等部署,因此,不是说“给定我认为环境所处的状态,执行这些操作以使其进入我想要的状态”,它允许您说“无论状态如何”环境进入,找出需要执行和执行它们的动作,进入我想要的状态。

我知道这超出了您关于管理配置的问题,但只有在整个部署管道图片中,您才能更好地管理每个环境配置。

有关部署管道的更多详细信息,我强烈推荐本书Continuous Delivery。我相信你会发现第2章:配置管理非常相关。