首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven tomcat插件:tomcat 7:run还是tomcat 7:run-war?

Maven tomcat插件:tomcat 7:run还是tomcat 7:run-war?
EN

Stack Overflow用户
提问于 2017-05-27 12:19:05
回答 1查看 3.3K关注 0票数 8

我在Java应用程序中使用tomcat7-maven-plugin。现在,我可以使用命令mvn clean tomcat7:run运行我的web服务器。最近,我注意到还有一个名为tomcat7:run-warhttps://tomcat.apache.org/maven-plugin-2.0/tomcat7-maven-plugin/plugin-info.html命令,它说:

tomcat7 7:run: 使用嵌入式Tomcat服务器,以动态 web应用程序的形式运行当前项目。 tomcat7:run-war: 使用嵌入式Tomcat服务器,以打包的 web应用程序的形式运行当前项目。

我知道命令tomcat7:run-war会将我的应用程序打包到一个jarwar文件中,然后在嵌入式服务器中运行它。我的问题是,在什么情况下我们应该使用这个命令,tomcat7:run还不够吗?或者运行打包应用程序会有更高的性能?我不确定。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-09-24 12:18:01

短答案

运行中的应用程序和服务器性能是相等的。但是,您通常希望使用run-war,因为它为您提供了传递war文件的额外好处。如果您绝对需要让您的应用程序以尽可能快的速度在本地运行(几乎没有这种情况),您希望使用run

来了细节

让我们先来看看war文件是什么以及它是为什么创建的:

战争。是以ZIP格式打包web应用程序目录层次结构的文件的扩展名,是Web的缩写。Java应用程序通常打包为WAR文件进行部署。[白龙]

为什么java web应用程序被打包为WAR

因为WAR不仅是一个zip文件,而且(正确构建)强制执行Java应用程序规范。您可以在任何容器上部署和运行war文件。查看维基百科以获得更多优势。

不同的目标,不同的结果

目标tomcat:runtomcat:run-war都在嵌入式tomcat服务器上启动应用程序。tomcat:run-war包含一个额外的package目标,用于将应用程序打包到WAR文件中。然后,这个WAR文件将由嵌入式tomcat服务器解压缩,以便能够运行应用程序。因此,应用程序和服务器是相同的,但是对于run-war来说,结果是不同的,因为您得到了额外的WAR文件。

但是那个WAR文件有什么用?

首先,除了几秒钟的构建时间之外,它没有什么坏处。即使是热交换工具和特性之间的WAR文件也能工作。创建WAR文件作为该目标的一部分的主要原因是:

  • 测试
  • 多重部署
  • CI管道
  • 归档

测试。构建一个WAR文件意味着您的构建管道经历了WAR构建的所有步骤。稍后您将部署这个WAR文件(提醒:这是容器的标准),您可以测试“build”、“unpackage”和“deploy”步骤是否正确工作。此外,如果不检查文件的结构,则可以检查它的结构。

多部署。您可以在本地构建和运行应用程序,但仍然可以将该WAR文件部署到已运行的多个容器中。在一些行业场景中,您需要确保WAR文件在不同的容器上运行,并且可以使用该文件将其部署到任何地方。

CI-pipeline.您可能不仅希望在本地应用程序,而且希望将结果集成到持续集成中。也许您甚至会自动地将本地构建部署到测试服务器上,但更有可能的是,您在CI服务器上有一个自动流程,用于构建WAR,在某些测试或暂存系统上运行WAR,并在正确的情况下转发WAR。

Archiving.你可能想要保存所有过去的构建战争文件。可能是因为提到的其他原因之一,或者只是作为快速历史访问的备份。了解磁盘空间和内存使用是如何随着应用程序的发展而发展的,这也是很有趣的。归档战争档案是调查的一种方法。它们也可能被部署到WAR存档服务器上。

结论

这两个目标都有它们的用法,但通常最好使用run-war目标,因为另外构建WAR文件会带来好处。

免责声明

由于这个话题有点过时,我想补充以下几点:我只是在做一个历史性的回顾。对于每个单独的用例,用例和需求今天可能有所不同。一些进程、maven目标和插件已经过时或出现了更好的实践。在制定这一目标时,我只是在解释其背后的可能意图。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44216775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档