如何使用 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 packagemvn war:war 来复制WAR 文件。

【讨论】:

谢谢 :) 这行得通。 OP 应将其标记为已验证的答案。【参考方案2】:

我使用了 Maven WAR 插件: http://maven.apache.org/plugins/maven-war-plugin/usage.html

【讨论】:

要添加的代码是:maven-war-plugin artifactId的配置标签中的 如果 webapps 文件夹位于远程服务器上(例如,它可以通过 SCP 复制吗?),怎么能做到这一点。我正在尝试使用 maven-wagon-ssh 库来做到这一点,它几乎可以工作,但我不知道如何控制发送哪些文件以及它们去哪里。【参考方案3】:

这是正确的做法:

        <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官方 页面了解更多信息。

【讨论】:

警告 - 此技术不会在 &lt;project&gt;/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项目如何部署到tomcat

如何从 Eclipse 将 Maven 项目的 WAR 部署到 JBoss 服务器?

Maven:如何获取在 WEB-INF 中复制的资源的战争包?

如何将maven项目版本放入war文件清单中?