【发布时间】:2022-01-23 20:34:56
【问题描述】:
有什么我可以添加到pom.xml 的东西,可以将生成的.war 文件从target 目录复制到我的Tomcat 的webapps 目录吗?
【问题讨论】:
标签: maven maven-plugin
有什么我可以添加到pom.xml 的东西,可以将生成的.war 文件从target 目录复制到我的Tomcat 的webapps 目录吗?
【问题讨论】:
标签: maven maven-plugin
<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 文件。
【讨论】:
我使用了 Maven WAR 插件: http://maven.apache.org/plugins/maven-war-plugin/usage.html
【讨论】:
这是正确的做法:
<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 文件。
【讨论】:
您可以使用http://cargo.codehaus.org/Deploying+to+a+running+container 并进行相应的配置。
【讨论】:
你也可以看看码头插件。只需输入“mvn jetty:run-war”,码头就会运行你的战争文件。
编辑:Jetty 是一个适合开发和测试的轻量级 servlet 容器。启动速度也快如闪电。
【讨论】:
或者,您可以让 tomcat 查看您的目标目录并直接从那里部署。
在您的 context.xml 或 server.xml 的 Context 元素中:
<Context path="" docBase="/path/to/target/exploded">
...
</Context>
然后你可以使用 war:exploded 目标来创建你的爆炸战争。
【讨论】:
不理想,但如果你有一个非常奇怪的应用服务器设置,你总是可以在打包运行时使用 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>
【讨论】:
感谢以上所有回答。
以下答案对我有用。这只是一个合并的。没什么特别的!
</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 文件的副本,那么它不会存在。
您也可以使用dependency plugin 来执行此操作
【讨论】: