【问题标题】:(Tomcat) Backup WAR on Deploy(Tomcat) 部署时备份 WAR
【发布时间】:2023-03-09 11:25:01
【问题描述】:

是否有任何内置机制可以在部署到 Tomcat 时备份 war 文件?

例如,我部署 whosit.war。我想要部署以备份到 whosit-backup.war 的当前 whosit.war。或者,如果每个部署都在 whosit-deploy-20110317-211037.war 中保留了一个额外的部署副本。等等等等。

显然我可以将它添加到我的部署脚本中,但如果 Tomcat 执行上述任何操作,我的生活会变得如此美好。

【问题讨论】:

  • 备份?你不应该通过从 Subversion 或 Git 中检查你的标记分支来随意创建一个吗?备份副本很好,但版本控制的源代码更好。
  • 我的源代码在 HG(你的 svn 上的 pssh),所以我已经准备好了。这不是世界末日,但我希望喜欢备份副本,仅在 0.000001% 的时间出现严重错误并且快速移动会很好一个好的战争副本回到原位,而不是克隆标签、重建和部署。

标签: tomcat


【解决方案1】:

您可以通过指定tag 属性来tag a deploy when deploying a webapp remotely。如果你使用 Maven,你可以specify the tag with the tomcat-plugin。假设您已经有了插件设置,您只需要指定属性。示例:

<properties>
    <maven.tomcat.url>http://example.com:8080/manager</maven.tomcat.url>
    <tomcat.username>tomcat</tomcat.username>
    <tomcat.password>tomcat</tomcat.password>
    <maven.tomcat.tag>mytag</maven.tomcat.tag>
    <maven.tomcat.path>/myapp</maven.tomcat.path>
</properties>

这将在你的经理的工作目录中创建一个战争副本,该目录以你的标签命名(例如$CATALINA_HOME/work/Catalina/localhost/manager/mytag)。您可以通过指定pathtag 来通过管理器检索和重新部署这场战争:

http://example.com:8080/manager/deploy?path=/myapp&tag=mytag

注意:如果管理器工作目录被删除,那么您标记的部署将消失。

【讨论】:

    【解决方案2】:

    我认为您必须自己编写脚本。

    【讨论】: