- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道使用 ant 支持多个构建版本的最佳方法是什么。在我当前的项目中,我有 3 个环境(开发、测试、生产)。有 2 台具有不同配置的生产服务器(不同的数据库、事件目录、Web 服务 url 等)。一次至少运行 2 个测试版本。添加了一些额外的配置选项,只是为了测试启用/禁用某些东西的行为。
如何使用 Ant 处理这一切?
目前,我们有一些目录,其中包含每个配置的文件集(persistence.xml、datasource、web.xml、jboss 特定文件、几个应用程序属性文件......),这些文件在构建期间被复制到适当的目录中(它变得很多,并且在所有配置中可见的更改要求我们更改所有配置的文件)。
有诸如 build-moduleA-dev、build-moduleB-dev、build-moduleA-test 之类的任务...
一般来说,构建过程如下所示:
最佳答案
从您写的内容中不清楚您是否已经这样做了,但是您应该为每个环境生成相同的构建工件,然后可以通过不同的环境将其作为构建管道的一部分进行提升。
就每个环境的配置而言,您也可以将它们视为构建工件,不同之处在于每个环境都有不同的工件。另一种方法是将配置存储在应用程序启动时加载的 DB 或 LDAP 中。但是,通常有一些环境配置不能存储在 DB 或 LDAP 中,至少不能存储在 DB 或 LDAP 中以获取环境配置。
然后,您针对特定环境的部署过程取决于该环境的构建工件和配置工件。我用过Apache Ivy使用 Ant 来管理这些类型的依赖项(以及正常的依赖项),我强烈推荐它。
同样对于您的部署过程,您应该使用类似 Puppet或 CfEngine .它们允许您对环境执行幂等部署,因此与其说“给定我认为环境所处的状态,执行这些操作以使其达到我想要的状态”,它允许您说“无论状态如何所处的环境,找出需要执行的 Action 并执行它们,以达到我想要的状态”。
我知道这超出了您关于管理配置的问题,但只有通过整个部署管道图片,您才能转向更好的方式来管理您的每个环境配置。
有关部署管道的更多详细信息,我强烈推荐这本书 Continuous Delivery .我相信您会发现第 2 章:配置管理非常相关。
关于configuration - ant如何支持多种构建配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5654323/
我正在使用 Ubuntu 16.04。 当我更新时,我收到以下消息 $ sudo apt-get update .... E: dpkg was interrupted, you must manua
似乎有些autoconf项目使用configure.in文件生成configure脚本,有些使用configure.ac。 使用一种或另一种之间的区别/优势是什么? 最佳答案 这只是风格问题。历史上
我正在尝试按如下方式配置 logback,但它抛出了这个错误。配置文件如下: %d{ISO8601} %-5p [%c] %msg%n
从Miguel de Icaza: We use a library profile that is better suited for mobile devices, so we removed f
我有两个 .config 文件,我需要一个 System.Configuration.Configuration那是它们之间的部分合并? 我可以将文件读取为 XML 并轻松创建所需的合并,但它是一个字
我似乎无法理解这两个注释。我尝试阅读 javadocs 但仍然无法弄清楚。任何人都可以用简单的代码来解释这两个吗? 非常感谢。 最佳答案 您使用 @Configuration作为配置 Spring b
我正在为一个简单的问题而焦头烂额。我的 .NET Core 3 应用程序中有一些设置,我认为最好将其移至我的 appsettings.json 文件。我按照本指南这样做:https://www.c-s
我正在为一个简单的问题而焦头烂额。我的 .NET Core 3 应用程序中有一些设置,我认为最好将其移至我的 appsettings.json 文件。我按照本指南这样做:https://www.c-s
我有以下测试方法: [TestMethod] public void TestHarvestMethod() { HarvestTargetTimeRangeUTC time = new Ha
我的以下代码没有产生预期的输出: public static void main(String[] args) throws MalformedURLException { Configura
我知道要从源代码编译和安装某些东西,在 Unix 系统中,涉及的三个步骤是: 1) ./configure 2) make 3) make install 当我检查OpenCV from source
我有以下片段: static void Main(string[] args) { var container = new UnityContainer(); container.Re
我想好像 apache 的 commons-configuration 可能/支持从属性文件中获取属性作为 map 到目前为止,我已经设法使用以下代码片段间接地做到了这一点 Map map = ne
我正在寻找任何技巧来使用 CKEditor 配置中的参数配置我的插件。我必须传递一些只能在显示 View 时传递的参数。 我想要这样的东西(带有 jQuery 适配器的示例): jQuery('t
在我正在玩的代码中,我看到一些地方是 @Configuration 类除了定义静态类之外什么都不做。格式各不相同,但通常是这样的: @Configuration public class someAu
我们在带有 JRE 7 的 Windows 7 中安装了 Cassandra 2.0.6,我们更新了 cassandra.yaml 文件,如下所示: 数据文件目录:D:\cassandra_data\
我在启动类中收到“'Startup.Configuration' 和'Startup.Configuration' 之间的歧义”错误。我不知道我做了什么导致这个问题。我所做的只是创建了一个 DBCon
我已经安装了 Cygwin64,现在我想安装 extundelete . 所以我下载了它,解压了文件,但是当我运行 ./configure 时它说: $ ./configure Configuring
为什么需要做(在容器目录内): # cd /container/directory/ # ./configure 代替: # pwd /external/path # /container/direc
我正在尝试编译qucs-0.0.19但是当我放置./configure时,它给了我以下错误: checking Checking if admsXml is working... no config
我是一名优秀的程序员,十分优秀!