我想使用 maven 将应用程序(war)部署到远程 tomcat(v7)中,保留现有的 context.xml - 或者也可以将 context.xml 与 war 一起部署。我认为这是一个经典问题,如果您想通过管理器重新部署到 tomcat,它会按顺序执行取消部署和部署 - 取消部署 context.xml 作为副作用,然后应用程序无法启动。
我已经尝试过的:
- 具有不同设置的货物 - 没有变化
- 'autoDeploy' = false - 在 tomcat 7 下不起作用
- 限制 tomcat 编写自己的配置目录 - 抛出错误消息并且 tomcat 7 无法启动
- 将每个上下文信息放入一个 context.xml.default - 不会删除上下文,但不幸的是,我们有一些应用程序在具有不同值的不同上下文中使用相同的键:-)
- 将上下文配置放入替代路径 - 在 ${catalina.base} 之外 - 无法使其工作
- 构建一个容器(docker)并重新部署它 - 这是可行的,但目前这不是一个选项
我正在考虑编写一个简单的 ssh 脚本(stop-tomcat、copy-war、start-tomcat)或替代管理器脚本,但首先我想在重新发明轮子之前问你。我看到了使用'tomcat7-maven-plugin'的解决方案,但听说它只适用于本地tomcat。我不坚持要获得一个成熟的 maven 解决方案:如果您建议使用带有简单 REST 调用的管理器的解决方案,我也可以在 maven 中实现。
所以问题分为三种可能的解决方案(在tomcat7下):
- 通过取消部署保留 context.xml
- 使用战争部署 context.xml
- 在不取消部署的情况下重新部署应用程序
你知道一个可靠的解决方案吗?