将env特定属性传递到webapp中

时间:2012-04-11 00:34:21

标签: java web-services tomcat deployment

我们正在为我们的webapp寻找持续集成系统的部署选项。我们正在构建一个.war文件。我们需要将它部署在几个不同的环境中(例如DEV,QA,STAGE等)。 AFAIK,有两种传递env特定属性的方法:

首先,在启动Tomcat时使用-D选项:

-Denv=DEV

这要求我们为每个环境自定义catalina.sh脚本。

其次,在启动Tomcat之前使用环境变量:

export env=DEV;

这要求我们调整每个环境的部署脚本。这取决于平台(即在Windows上你必须做set env=DEV)。

谁能告诉我这两个选项中哪一个更好?或者还有其他更好的吗?

1 个答案:

答案 0 :(得分:0)

我们有一个Web应用程序,可部署到14个不同的环境中。为了管理这个,我们为每个环境创建一个独特的构建。

我们使用maven作为构建系统,因此每个环境都有一个独特的配置文件。该配置文件引用用于过滤的属性文件,其中包含因环境而异的配置。此信息被标记化为Spring上下文文件,web.xml,weblogic.xml等。(我们不会过滤源文件,因为这会很快变得难看。)

第二部分是我们的Jenkins CI服务器。我们为每个引用相应配置文件的环境都有一份工作。这指向我们的subversion仓库中的一个众所周知的标签名称。所以流程是这样的:

  1. 开发发生并且代码已提交到trunk。
  2. 需要构建一些env,因此我们创建一个名为“latest”的标签(如果存在则删除旧副本)。同时,我们还创建了一个带有日期时间戳的标签,但这是可选的。
  3. 启动适当的哈德森构建。这意味着我们不会构建一些开发人员工作站,并且已经配置了构建,因此无需记住。
  4. 将工件拉出Jenkins部署。
  5. 我已经看到应用程序配置在应用程序服务器本身内部维护,但除非你有glu之类的东西来管理事情,否则很快就会成为维护的噩梦。如果您有不同的开发和运营团队,则尤其如此。