如何使用 Maven 将 .war 复制到 Tomcat 的 webapps 目录?
Posted
技术标签:
【中文标题】如何使用 Maven 将 .war 复制到 Tomcat 的 webapps 目录?【英文标题】:How to copy .war to Tomcat's webapps directory using Maven? 【发布时间】:2022-01-23 20:34:56 【问题描述】:有什么我可以添加到pom.xml
的东西,可以将生成的.war
文件从target
目录复制到我的Tomcat 的webapps
目录吗?
【问题讨论】:
【参考方案1】:<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.1</version>
<configuration>
<outputDirectory><!-- Tomcat webapps location--></outputDirectory>
<!-- Example of Tomcat webapps location :D:\tomcat\webapps\ -->
</configuration>
</plugin>
</plugins>
</build>
将它添加到pom.xml
后,您可以通过调用mvn package
或mvn war:war
来复制WAR 文件。
【讨论】:
谢谢 :) 这行得通。 OP 应将其标记为已验证的答案。【参考方案2】:我使用了 Maven WAR 插件: http://maven.apache.org/plugins/maven-war-plugin/usage.html
【讨论】:
要添加的代码是:maven-war-plugin artifactId的配置标签中的这是正确的做法:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<warName>$name</warName>
<outputDirectory>C:\Tomcat7\webapps</outputDirectory>
</configuration>
</plugin>
这将在 C:\Tomcat7\webapps 文件夹中放置一个带有 maven 项目名称的 war 文件。
【讨论】:
不,不是。这是非常hacky的方式。【参考方案4】:您可以使用http://cargo.codehaus.org/Deploying+to+a+running+container 并进行相应的配置。
【讨论】:
部署到一个很容易! :) 部署到两个很难。 :((除非你运行 deploy 命令两次)***.com/questions/732275/… @valerio,链接已损坏,无法打开【参考方案5】:你也可以看看码头插件。只需输入“mvn jetty:run-war”,码头就会运行你的战争文件。
编辑:Jetty 是一个适合开发和测试的轻量级 servlet 容器。启动速度也快如闪电。
【讨论】:
我不想运行war文件。我希望将它放在 tomcat 的 webapps 目录中,而不必手动进行。【参考方案6】:或者,您可以让 tomcat 查看您的目标目录并直接从那里部署。
在您的 context.xml 或 server.xml 的 Context 元素中:
<Context path="" docBase="/path/to/target/exploded">
...
</Context>
然后你可以使用 war:exploded 目标来创建你的爆炸战争。
【讨论】:
您能否提供有关如何设置的更多信息。我过去曾这样做过,但谷歌无法找到示例配置。 提升这个答案。尽管许多其他方法都有效,但这对我来说是迄今为止最快的(构建 1.5 分钟,而次快方法为 7 分钟)【参考方案7】:不理想,但如果你有一个非常奇怪的应用服务器设置,你总是可以在打包运行时使用 antrun 任务集来执行
<build>
....
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<configuration>
<tasks>
<!-- Ant copy tasks go here -->
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
【讨论】:
【参考方案8】:感谢以上所有回答。
以下答案对我有用。这只是一个合并的。没什么特别的!
</project>
........
<build>
<finalName>HelloWorld1</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<outputDirectory>C:\Program Files (x86)\apache-tomcat-8.5.8\webapps\</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
</project>
了解更多信息。请参考dependency:copy官方 页面了解更多信息。
【讨论】:
警告 - 此技术不会在<project>/target
目录中创建 war 文件,然后将其复制到 outputDirectory
中。这直接在outputDirectory
中构建它。因此,如果您希望在 target
目录中获得一份 war 文件的副本,那么它不会存在。【参考方案9】:
您也可以使用dependency plugin 来执行此操作
【讨论】:
以上是关于如何使用 Maven 将 .war 复制到 Tomcat 的 webapps 目录?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 maven 托管依赖项复制到 war\web-inf\lib 中,以便我可以在 Eclipse 中以调试模式运行我的 GWT 2.0 应用程序?
Maven war插件将src / main / webapp复制到类中
如何从 Eclipse 将 Maven 项目的 WAR 部署到 JBoss 服务器?