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

标签 configuration ant build

我想知道使用 ant 支持多个构建版本的最佳方式是什么。在我当前的项目中,我有 3 个环境(开发、测试、生产)。有 2 台具有不同配置(不同数据库、事件目录、Web 服务 URL 等)的生产服务器。同时运行至少 2 个测试版本。添加其他配置选项只是为了测试启用/禁用某些功能的行为。

如何使用 ant 来处理这一切?

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

一般来说,构建过程如下:

  1. 加载构建属性
  2. 将服务器类编译到构建目录
  3. 将 Web 类编译到构建目录
  4. 构建接口(interface)(gwt)
  5. 将静态资源和正确的配置文件复制到构建目录中
  6. 创造耳朵/ war / jar

所以,我想知道:

  • 如何让它变得更简单?
  • 保留单独的文件更好还是使用替换任务之类的东西更好?
  • 你是怎么做到的?

最佳答案

从您所写的内容中不清楚您是否已经这样做了,但您应该为每个环境生成相同的构建工件,然后可以将其作为构建管道的一部分通过不同的环境进行推广。

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

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

此外,对于您的部署过程,您应该使用类似 Puppet 的内容或CfEngine 。它们允许您对您的环境执行幂等部署,这样您就可以说“无论环境处于什么状态,执行这些操作以使其达到我想要的状态”,而不是说“给定我认为环境所处的状态”环境在了,找出需要执行的 Action 并执行它们,以达到我想要的状态”。

我知道这超出了您有关管理配置的问题,但只有通过整个部署管道图,您才能采取更好的方法来管理每个环境的配置。

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

关于configuration - ant 如何支持多种构建配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5654323/

相关文章:

xpath - 如何在 Saxon 中使用 XPath 3.1?

azure - .NET Core - 在 Azure 部署任务中设置环境变量

java - 如何在 Ant WAR 任务中包含配置文件?

c++ - C++中静态变量的存储位置是什么时候确定的?

gradle - Gradle用户手册示例失败

debugging - 在项目 MyEclipse 上打开调试配置时出现 NullPointerException

ios - mobileconfig 文件中 webclip 负载中的半透明状态栏配置

ant - 我可以使Ant复制任务特定于操作系统吗?

ant - 如果 makefile 失败则停止 ant 构建

java - 如何在gradle中构建具有传递项目依赖关系的项目