我有一些使用Apache Commons Configuration的Java项目,它们被部署到多个环境中的多个服务器(dev/test/prod)。服务器特定配置的自动部署
所有的代码都是一样的,但是一些配置项更改,比如JMS URL(dev应指向dev等)以及服务器名称和环境(我使用这些配置项进行调试)。
例子:
<config>
<!-- environment can be dev|test|prod -->
<environment>dev</environment>
<serverName>myServer1</serverName>
<jmsUrl>http://my-jms-url-dev1,http://my-jms-url-dev2</jmsUrl>
</config>
目前,我部署,建立,然后手动编辑文件,以提供特定于服务器的配置。当我将它部署到单独的服务器上时,我想要一种自动化的方法,但我考虑过的所有方法都需要同等的痛苦来设置。
ANT - 使用SVN检出项目并在每个带有ANT的服务器上构建它。 ANT从两个静态文件(.servername和.environment)中读取服务器名称和环境,并将特定于服务器的配置复制到通用配置中。问题是,我仍然需要为每个服务器创建一个配置文件(我有24台服务器,而且这可能会增加,所以可扩展性不好)。
SVN - 将我的每个项目分支到特定于服务器的分发。在这里,可扩展性更糟,它成为维护的噩梦。
有没有人对我有任何提示?
哦,我应该补充。这只是为了在每台服务器上生成.servername和.environment文件。构建需要这些文件的实际任务还将使用进行查找/替换。漂亮! –
bdetweiler
2010-12-20 23:00:26
您可以简化获取Hostname目标: 将在Windows和Linux上工作,请参阅: http://stackoverflow.com/questions/1196989/ ant-machine-name-property/1375866#1375866 –
Rebse
2011-03-13 20:48:25
有趣。感谢分享! – bdetweiler 2011-08-05 20:29:45