我们目前有一个运行 2 个 web 应用程序的 Tomcat 服务器;一个用于美国网站,另一个专门用于欧盟的网络应用程序。我们已经按照这些思路对应用程序和数据库进行了功能分区;一个逻辑实例用于当前正在运行的美国网站,另一个用于欧盟网站。
目前我们的发布流程如下: - 我们在 Tomcat 上部署了 2 个基本相同的 war,除了在重新启动 tomcat 之前我们更改了一个属性文件以识别美国或欧盟 webapp
我们想要做的是将整个过程自动化。我想部署我的 2 场 war ,既不修改属性文件,也不真正改变我的构建脚本。有关如何删除此手动步骤的任何建议?
最佳答案
如果您使用的是 Ant 构建脚本,则可以使用 copy
命令的 filterset
功能来设置属性。
你需要:
- 模板属性文件
- 两个属性文件(每个 webapp 一个)
您的模板文件:
...
locale = @deploy.locale@
other.stuff.int = 123
other.stuff.string = test string
...
(注意 @deploy.locale@
占位符)
您的美国属性(property)文件:
...
deploy.locale = US
...
您的欧盟属性(property)文件:
...
deploy.locale = EU
....
现在在您的 Ant 构建文件中,您可以:
- 删除 TMP 目录
- 将项目编译到TMP目录
- 复制模板属性文件合并到美国属性中
- 将TMP文件夹打包成war_for_us.war
- 将 war_for_us.war 复制到您的 tomcat webapps 目录中
- 复制模板属性文件合并到EU属性中
- 将TMP文件夹打包成war_for_eu.war
- 将 war_for_eu.war 复制到您的 tomcat webapps 目录中
您还可以在构建脚本中停止和启动 tomcat。 以下是复制模板的方法:
<copy todir="${tmp.dir}" overwrite="true">
<fileset dir="templates">
<include name="template.properties" />
</fileset>
<filterset filtersfile="us.properties" />
</copy>
...
<copy todir="${tmp.dir}" overwrite="true">
<fileset dir="templates">
<include name="template.properties" />
</fileset>
<filterset filtersfile="eu.properties" />
</copy>
参见 this post了解其他 Ant 部署技巧。
关于Tomcat + 管理属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4950632/