最近在学习Maven来构建项目,在构建webapp的时候i每次都要把mvn clean install后生成的war包自动复制到Tomcat/webapps中, 久而久之感觉好繁琐。于是Google如何将maven项目部署到tomcat中,虽然找到了大量的相关资料。但最后依然会出现莫名奇妙的问提,最后疯狂的google了一天查看了大量资料之后最终解决了这个问题。
出现问题的原因:查阅出现的大多数相关资料都是针对tomcat6或者更低版本与Tomcat7或者tomcat8不兼容。
最终解决方案:
1.打开tomcat的manager功能,给tomcat分配用户和角色。
打开tomcat/conf/tomcat-users.xml。在标签内添加:
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-script,admin-gui"/>
启动tomcat访问http://localhost:8080/manager输入配置的用户名和密码看是否可以登录,如果可以进下一步。
2.在maven项目的pom.xml中添加tomcat的plugins:
<build>
<finalName>testWebAppInMaven</finalName>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http://localhost:8080/manager/text</url>
<username>admin</username>
<password>admin</password>
<path>/${project.artifactId}</path>
</configuration>
</plugin>
</plugins>
这里注意以下几点:
把tomcat的username和password直接写在项目pom.xml中即可,而不需要写在~/.m2/settings.xml中。网上找的资料全是这种做法,但这种做法无法在tomcat7或8中使用。
<url>
中一定写 http://localhost:8080/manager/text而不是http://localhost:8080/manager或http://localhost:8080/manager/html。<version>2.2</version>
2.2的版本即可支持tomcat8- 最后部署问题: mvn tomcat7:deploy或者tomcat8:redeploy
最终会打成一个war包分配在tomcat/webapps目录下。该war包的名称即为<path></path>
,最后正确访问即可。