当前位置: 首页 > 知识库问答 >
问题:

Maven tomcat插件:tomcat7:run还是tomcat7:run-war?

宋正真
2023-03-14

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

tomcat7:run:
使用嵌入式Tomcat服务器将当前项目作为动态web应用程序运行。

tomcat7:run-war:
使用嵌入式Tomcat服务器将当前项目作为打包的web应用程序运行。

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

共有1个答案

骆文华
2023-03-14

简短回答

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

让我们从什么是war文件以及创建它的目的开始:

不同的目标,不同的结果

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

但是WAR文件有什么用呢?

    null

测试。构建WAR-file意味着构建管道将经历war-build的所有步骤。当您稍后部署WAR-file(提醒:这是容器标准)时,您可以测试'build'、'unpackage'和'deploy'步骤是否正确工作。此外,如果不这样做,您可以检查文件的结构。

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

CI-管道。您可能不仅希望本地应用程序,还希望将结果集成到持续集成中。也许您甚至会自动将本地构建部署到测试服务器上,但更有可能的是,您在CI服务器上有一个自动进程,该进程构建WAR,在某个测试或临时系统上运行它,并在之后转发WAR,如果该进程正常工作的话。

存档。您可能希望保留所有过去的构建WAR文件。可能是出于上述其他原因之一,或者只是作为快速历史访问的备份。了解磁盘空间和内存使用情况如何随着应用程序的增长而变化也是很有趣的。将WAR文件归档是一种调查方法。它们也可能被部署到WAR存档服务器。

结论

这两个目标都有各自的用法,但通常更喜欢使用run-war目标,因为您可以通过额外构建war-file获得好处。

 类似资料:
  • 我有一个maven项目,我想用ApacheTomcat7调试它。以下是我的pom的内容。xml。 我在eclipse中创建了一个名为mytomcatserver的tomcat服务器,并使其使用安装目录。我还在中指定了这个tomcat服务器。m2/设置。xml。当我在maven build中运行tomcat7:deploy时,它将war部署到指定的tomcat实例,然后我可以从浏览器访问web应用程

  • 以下是我的POM中的一些相关片段: 版本:Maven 3.0.4、Tomcat Maven Plugin2.1、Jacoco 0.6.2.201302030002、Java7

  • 作为一个maven noob,我试着理解两者之间的区别 而且 Apache文档对于不熟悉环境的人来说意义不大:

  • 本文向大家介绍启动一个线程是用run()还是start()?相关面试题,主要包含被问及启动一个线程是用run()还是start()?时的应答技巧和注意事项,需要的朋友参考一下 考察点:JAVA线程 启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。

  • 问题内容: 当我将https更改为tomcat 7.0的server.xml中的安全连接时 从IDE运行Tomcat时出现错误 造成原因:java.io.FileNotFoundException:C:\ Documents and Settings \ User.keystore(系统找不到指定的文件),位于java.io.FileInputStream.open(本机方法) 但是运行tomca

  • 我正在将tomcat6升级到tomcat7。目前,该应用程序在tomcat6上部署并运行良好。 这是配置: web.xml 在里面jsp: 我有jstl-1.2.jar,jstl-api-1.2.jar,jstl-1.2jar在我的Tomcat/lib目录(与Tomcat6相同)。 我最终得到了与此相关的各种异常,例如: 在我的pom里。我要开车了 Tomcat7是否应该不支持2.5?我尝试过使用