Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在同一构建过程中为Tomcat创建和部署特定于环境的war构建_Tomcat_Ant_Build_Build Process_Environment Variables - Fatal编程技术网

在同一构建过程中为Tomcat创建和部署特定于环境的war构建

在同一构建过程中为Tomcat创建和部署特定于环境的war构建,tomcat,ant,build,build-process,environment-variables,Tomcat,Ant,Build,Build Process,Environment Variables,我希望能够构建war文件并将其部署到多个环境中。我知道我可以创建一个ant任务来获取环境,或者在war中包含文件,或者根据需要替换令牌。然而,这将导致与环境(开发人员、质量保证人员、灾难恢复人员、产品开发人员等)一样多的不同战争文件。这似乎会创建一个从未测试过的生产战争文件。是的,只有特定于环境的属性应该更改,但是如果出现问题,就无法在dev中部署war文件 有没有一种简单的方法可以创建一个war文件并将所有配置文件都外部化?我应该在startup.sh脚本中设置位置吗?这似乎需要更改代码才能从

我希望能够构建war文件并将其部署到多个环境中。我知道我可以创建一个ant任务来获取环境,或者在war中包含文件,或者根据需要替换令牌。然而,这将导致与环境(开发人员、质量保证人员、灾难恢复人员、产品开发人员等)一样多的不同战争文件。这似乎会创建一个从未测试过的生产战争文件。是的,只有特定于环境的属性应该更改,但是如果出现问题,就无法在dev中部署war文件

有没有一种简单的方法可以创建一个war文件并将所有配置文件都外部化?我应该在startup.sh脚本中设置位置吗?这似乎需要更改代码才能从外部位置获取文件,我不确定这将如何处理某些特定于框架的项目,如数据库配置。目前,我使用dev config创建一个war文件,然后将其部署到每个环境中,使其分解,然后运行脚本复制特定于环境的属性文件,然后重新启动tomcat,使这些属性生效,但这似乎不是一个好的解决方案

我需要的属性文件包括数据库配置、特定于应用程序的属性(如邮件服务器的位置)和log4j.properties

我正在运行Tomcat的Linux服务器上部署这些脚本,并且我可以完全访问这些服务器,因此我可以创建我需要的任何ant、bash等脚本

  • 您可以做的一件事是将JNDI用于数据源之类的事情,这样您的应用程序就可以从容器中获取资源。但该解决方案并不适用于所有配置的东西

  • 总的来说,我认为为每个环境创建一个war/ear是“正常”的做法。我不同意你所说的“部署一个从未经过测试的war文件”。您正在部署一个war文件,该文件的配置没有经过测试,因此更准确。也许您可以编写一些单元测试来验证生产配置,并在构建prod war时运行它们,以便检查“test prod war”需求…

    我也有同样的问题,我同意David的观点。不同环境下的不同战争不是解决办法。每次构建war时,jar etc文件的MD5总和都会不同。如果你在prod的构建过程中遇到了问题,而不是测试战,那么你就会遇到问题。一定有更好的办法。