将版本化的 WAR 文件部署到 tomcat

Posted

技术标签:

【中文标题】将版本化的 WAR 文件部署到 tomcat【英文标题】:deploying a versioned WAR file to tomcat 【发布时间】:2011-04-22 11:08:07 【问题描述】:

我想知道将 maven 打包的 WAR 文件部署到 tomcat 的最佳实践是什么。 使用 Maven 发布插件,我为我的项目获得了一个版本化的战争文件 例如:myservice-1.0.0.war

我想将它部署到 tomcat 以便我可以按如下方式访问它 例如:http://localhost:8080/myservice

默认情况下,tomcat 将 war 文件分解为 CATALINA_HOME/webapps 下名为 myservice-1.0.0 的目录。但是出于上面提到的原因,我想将战争作为一个名称为 myservice 的目录来爆炸。

我知道我可以简单地重命名 myservice-1.0.0.war >> myservice.war 然后将其部署到 Tomcat 中。

我想知道别人是怎么做的?

【问题讨论】:

【参考方案1】:

我会通过提及 myservice 作为 artifactId 和最终名称并使用 maven cargo 插件部署到 tomcat 来做到这一点。 http://cargo.codehaus.org/Maven2+Plugin+Tips

【讨论】:

谢谢。我确实使用工件 ID 作为 myservice,但我还需要对项目进行版本控制,在我的情况下是 1.0.0 您在提供的链接中特别提到了什么提示? ok... 在构建标签中有一个选项可以提供最终名称,它成为战争的名称。你试过设置吗? 很酷,谢谢。我忘记了。是的,这是一个选择,我绝对可以尝试。我仍然有兴趣了解其他人如何在生产构建中使用它。【参考方案2】:

您可以将文件 /META-INF/context.xml 包含如下内容:

<?xml version="1.0"?>
<!DOCTYPE Context>
<Context path="myapp">
</Context>

请参阅http://tomcat.apache.org/tomcat-5.5-doc/config/context.html 上的文档

【讨论】:

【参考方案3】:

您可以这样做,而不是重命名 war 文件:

只需在您的 tomcat-dir/conf/server.xml 中的 &lt;Host&gt;..&lt;\Host&gt; 标记之间添加以下内容。

for : myservice-1.0.0.war 文件

<Context path="/myservice" docBase="/myservice-1.0.0" debug="0" reloadable="true"></Context>

Reference

【讨论】:

这对于主要版本来说是合理的,但如果您的版本经常更改,您可能更喜欢自动化程度更高的东西。我可能会将您的解决方案与上述解决方案混合,以从文件名中删除次要版本号。【参考方案4】:

我遇到了同样的问题。对我有用的是将此属性元素插入到货物可部署配置中:

                    <deployable>
                        <groupId>org.something</groupId>
                        <artifactId>something-idm-esb</artifactId>
                        <properties>
                            <context>something-idm-esb</context>
                        </properties>
                        <type>war</type>
                    </deployable>

如果没有此属性元素,应用程序将部署到 localhost:8080/something-idm-esb-0.9.14.2,这不是应用程序在运行时需要的。使用属性部分,将应用部署到 localhost:8080/something-idm-esb/

【讨论】:

以上是关于将版本化的 WAR 文件部署到 tomcat的主要内容,如果未能解决你的问题,请参考以下文章

如何手动将war文件部署到tomcat?

如何使用命令提示符将war文件部署到tomcat?

Spring Boot将WAR文件部署到Tomcat

将 .WAR 部署到 tomcat 时遇到问题

将war文件部署到Tomcat时出现Elastic Beanstalk 502错误

将 WAR 部署到 AWS Tomcat 404 错误