tomcat7-maven-plugin-用于部署WAR的Tomcat Maven插件
今天,我们将研究Tomcat Maven插件(tomcat7-maven-plugin),该插件可帮助我们轻松地将WAR文件部署到Tomcat。
Tomcat Maven部署
最近,我正在开发一个Web应用程序,并在完成构建后,将复制的WAR文件复制到Tomcat webapps目录中。
这很耗时,很无聊,有时我曾经错过了更新的WAR文件来复制并在以后注意到它。
然后,我决定寻找一些配置,通过这些配置可以配置Maven构建,以将生成的WAR文件自动部署到tomcat中。
我的第一种方法是使用Maven插件将生成的WAR文件复制到tomcat部署目录。
例如,以下是我的简单Web应用程序的pom.xml文件,我删除了所有不需要的内容以使其清晰可见。
<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>MyWebapp</groupId> <artifactId>MyWebapp</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <build> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <artifactId>maven-war-plugin</artifactId> <version>2.3</version> <configuration> <warSourceDirectory>WebContent</warSourceDirectory> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </build> </project>
我使用了" maven-antrun-plugin"为"集成测试"阶段添加了另一个任务,该阶段是将WAR文件复制到本地tomcat目录中。
<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>MyWebapp</groupId> <artifactId>MyWebapp</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <properties> <deployFolder>/Users/hyman/Dev_Softwares/apache-tomcat-7.0.32/webapps</deployFolder> </properties> <build> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <artifactId>maven-war-plugin</artifactId> <version>2.3</version> <configuration> <warSourceDirectory>WebContent</warSourceDirectory> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> <plugin> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <phase>integration-test</phase> <configuration> <tasks> <copy file="target/${pom.build.finalName}.war" tofile="${deployFolder}/${pom.build.finalName}.war" </tasks> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> <finalName>${project.artifactId}</finalName> </build> </project>
更改非常简单,创建一个属性来定义tomcat的部署目录,并添加finalName配置以跳过WAR文件中的版本详细信息。
mvn clean Integration-test软件包–它将生成WAR文件并也部署到tomcat中。
mvn clean package –它只会构建项目,不会尝试将其部署到tomcat容器中。
上面的方法解决了我的问题,但是有两个缺点。
由于tomcat deploy文件夹是硬编码在pom.xml中的,因此,如果我更改了tomcat服务器位置,则也必须在此处进行更改。
另外,由于这是我的用户配置,因此无法将此代码签入存储库。我无法使用这种方法将应用程序部署到任何远程服务器中。
Tomcat7 Maven插件
由于上述缺点,我在网上寻找更好的解决方案,并发现已经有一个用于此工作的插件Tomcat Maven Plugin。
我们可以将此插件与一些配置设置一起使用,以使用其管理控制台API将我们的应用程序部署到Tomcat服务器中。
Tomcat Maven插件
在使用Apache Tomcat Maven插件之前,我们需要执行一些配置设置。
让我们一一看一下这些配置。
请注意,我使用的是Tomcat-7,如果您使用的是其他版本,则可能需要相应地更改某些配置。
在Tomcat 7中添加管理员角色和用户:我们需要在" tomcat-users.xml"文件中添加" manager-gui"和" manager-script"角色,并创建一个具有这些角色的用户。
只需在您的tomcat-users.xml文件中添加以下几行,然后重新启动服务器即可。
TOMCAT-HOME/conf/tomcat-users.xml。将服务器添加到Maven settings.xml文件:下一步是在maven settings.xml文件中添加服务器,如下所示。
$HOME/.m2/settings.xml。
请注意,用户名和密码应与上一步中配置的相同。
tomcat7-maven-plugin示例
- Maven项目pom.xml更改:最后一步是在Web应用程序pom.xml文件中配置Tomcat Maven插件。
只需将以下行添加到pom.xml插件部分。
tomcat6-maven-plugin示例如果使用的是Tomcat-6,则应改用以下配置。
就是这样,现在我们可以使用以下命令通过maven命令部署,取消部署和重新部署我们的应用程序。
Tomcat 7 Maven插件部署命令
- mvn tomcat7:部署
- mvn tomcat7:取消部署
- mvn tomcat7:重新部署
Tomcat 6 Maven插件部署命令
对于Tomcat-6,应使用以下命令。
- mvn tomcat6:部署
- mvn tomcat6:取消部署
- mvn tomcat6:重新部署
以下是deploy命令为tomcat7-maven-plugin生成的示例输出。
<role rolename="manager-gui" <role rolename="manager-script" <user username="tomcat" password="tomcat" roles="manager-gui,manager-script"
您可以转到Tomcat Manager应用程序并确认已部署该应用程序,也可以直接在浏览器中访问该应用程序以进行确认。