在前面的文章中我介绍了如何搭建Maven环境,如何搭建Tomcat环境,以及maven搭建和tomcat搭建过程中可能遇到的问题以及解决方法,那到底如何将一个maven项目发布到tomcat??maven项目发布到tomcat有两种方式:
1.生成war包,手动运行
2.自动发布到本地,远程Tomcat
这里我只介绍第一种方式,其实我首先尝试的是第二种方式,这样可以直接在Eclipse中就可以看到运行效果,但是尝试了很多次都没能成功,一直在maven build...这里构建失败,很可能是pom.xml配置有问题,这个以后有时间在研究。so~~~~
生成war包,手动运行
1.修改tomcat的配置文件,使其通过用户名密码可以被外界访问,安装目录下tomcat8.5\conf\tomcat-users.xml
添加如下代码,设置用户名和密码为zhh:
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager-gui"/>
<role rolename="manager" />
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="zhh" password="zhh" roles="manager-gui,manager,manager-script,manager-jmx,manager-status,admin-script,admin-gui"/>
配置完之后,启动tomcat8.5\bin下面的startup.bat之后,输入http://localhost:8080/manager ,tomcat的管理界面登录如下:
2.修改下maven的配置文件maven\conf\settings.xml,给他配置上tomcat服务器
<server>
<id>tomcat8</id>
<username>zhh</username>
<password>zhh</password>
</server>
3.添加tomcat7-maven-plugin,外部配置好了,现在配置下web工程中的pom,添加tomcat7-maven-plugin,我们使用的是tomcat8.5,一开始我一直查找tomcat8-maven-plugin的资源,后来也找到了,但是发现tomcat7-maven-plugin的2.2版本兼容tomcat8
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.inspur</groupId>
<artifactId>TestPlatform</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>TestPlatform Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
</dependency>
</dependencies>
<build>
<finalName>TestPlatform</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<executions>
<execution>
<id>default-compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http://localhost:8080/manager</url>
<username>zhh</username>
<password>zhh</password>
<update>true</update>
<!--
<path>/${project.artifactId}</path>
-->
<path>/TestPlatform</path>
<uriEncoding>UTF-8</uriEncoding>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
4.在Eclipse中启动tomcat8.5,然后右击项目选中maven build...,然后配置goals:package,这样就会发布war包,运行之后会在控制台看到build success,证明maven项目发布成功。
maven项目通过war包build success之后,去;浏览器访问发现404错误,这就很坑了,查阅了大量的资料后做一下总结:
1.检查项目名称以及访问路径,localhost:8080/项目名/manager或localhost:8080/项目名/login
2.web.xml中未加Spring的ContextLoaderListener监听器
解决方法:添加上如下代码
<!-- Spring监听 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
3.我们没有把war包放到tomcat的wabapps文件夹下,或者tomcat的wabapps文件夹下有多个war包
解决办法:此时需要我们去tomcat中的conf文件夹下,打开server.xml文件,然后在Host中修改,添加如下。这样就能防止wabapps文件下有多个war的时候服务器找不到文件而包404的错误了!
//docBase中的值是我们放到webapps文件夹下的war包的名
<Context path="/" docBase="map-1.0-SNAPSHOT" debug="0" privileged="true" reloadable="true" />