Rom*_*man 4 java ant build-automation continuous-integration properties
我有一个Web应用程序.我正在为它配置CI.
我们没有使用构建工具(既不是Ant也不是Maven),而是通过IDE进行构建.现在我正在研究一个将由我们的构建系统使用的Ant脚本.
当项目在构建服务器上构建但在本地计算机上不构建时,有几个属性文件应具有不同的属性值.
处理这种情况的常用方法有哪些?
如果我们使用Maven,我可能会使用不同的配置文件,但我们有Ant.
我能看到的一个可能的解决方案是为所有属性文件集创建一个根文件夹,并将每个集存储在一个单独的子文件夹中(参见下面的模式).
/profiles
/dev1
prop1.properties
prop2.properties
/dev2
prop1.properties
prop2.properties
/build-server
prop1.properties
prop2.properties
/webapp
/WEB-INF
Run Code Online (Sandbox Code Playgroud)
然后在Ant构建期间,我们可以将正确的集合复制到正确的位置.但是像我们以前那样通过IDE进行构建可能是一个问题(因为属性文件不再存储在src文件夹下的适当位置).
还有其他方法吗?
如果我了解你,你可以为连续构建服务器上的每个环境构建单独的ear/war/jar.那是对的吗?
我有两种处理方式:智能方式和愚蠢方式:
智能方法是配置应用程序服务器(JBoss,Weblogic等)以查找应用程序服务器中安装的jar/ear/wars外部所需的属性文件.通过这种方式,您可以构建一组jar/ear/wars,它可以在任何地方使用.另外,你做了一件非常非常重要的事情:你将手指的责任推到别处.
如果属性文件被打包为jar/ear/war的一部分,并且服务器上的某些内容发生了变化,那么你就会受到责备,因为你的构建很糟糕.当然,你无法知道他们改变了环境,但你确实在生产服务器上安装了那个糟糕的构建文件.
但是,如果属性存储在构建工件之外,那么它是负责配置有问题的服务器的团队.
实际上,负责配置应用程序服务器以处理问题的团队要容易得多.他们知道发生了什么变化,他们可以更新属性文件以反映这种变化.不仅如此,您只需要构建和分发一组工件.如果设置了新环境,您不必担心旧环境中的某些内容是否发生变化.实际上,在不强制您执行新版本的情况下,可以轻松进行更改.
我们能够在上一家公司做Smart Way的事情.在我现在的公司,我们做的是Dumb Way.这些属性嵌入在我们的构建工件中,并且没有简单的方法来更改它.
我按后缀而不是不同的目录(即build.properties.dev1,build.properties.dev2等)划分了每组属性文件.我们把属性文件放在一个目录中.
当我进行构建时,我使用AntContrib <for>任务多次遍历构建过程,每次使用不同的属性文件.然后,我为每个属性文件集构建一个工件.我在属性文件上使用后缀作为target我存储构建工件的目录中的文件夹名称.这样,每个构建都会为所有环境生成所有工件.
这样,如果工件在开发环境中工作,它将在QA和Production中工作.唯一的问题是我在Jenkins服务器上存储了5到10倍的工件数量,所以我需要5到10倍的磁盘空间.
顺便说一句,只要我可以定义一个<fileset>查找属性文件,我就可以使用该<for>任务,这样就可以使用不同的目录了.并且,您可以<basename>用来摘下目录名称.
| 归档时间: |
|
| 查看次数: |
529 次 |
| 最近记录: |