maven project 默认情况下是无法直接通过tomcat等容器部署的,这是因为maven项目的目录结构并不是标准的web目录结果,通过maven骨架创建的项目,它的web.xml项目描述符不在tomcat所能识别的目录下,所以在部署时才不能选择。这是便需要tomcat6-maven-plugin这个插件。不然每次都得clean package打成war后手动部署到tomcat容器上,这样太麻烦了。
1 Tomcat6.0(Tomcat7.0)的管理员的配置,进入tomcat的安装目录下的conf目录,编辑tomcat-users.xml,找到最后的:
<span style="font-family:Comic Sans MS;"><strong><!--
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
--></strong></span>
在上面这段后面 添加上:
<span style="font-family:Comic Sans MS;"><strong><role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="admin" password="admin" roles="manager-gui,manager-script"/></strong></span>
从中可以看出管理员的用户名和密码!
启动tomcat之后,在浏览器中输入:http://localhost:8080 可以看到tomcat的欢迎页面就说明配置成功了。
2. pom.xml tomcat插件配置:在<build>标签中插入下面代码
<span style="font-family:Comic Sans MS;"><strong> <build>
<finalName>springmvc</finalName>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat6-maven-plugin</artifactId>
<version>2.0-SNAPSHOT</version>
<configuration>
<url>http://localhost:8080/manager</url><!-- url属性为tomcat的manager页地址 -->
<server>tomcat</server> <!-- server属性的值与settings.xml文件中配置的server的id一致 -->
<username>admin</username> <!-- path为发布的应用的名称 -->
<password>admin</password>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.0-SNAPSHOT</version>
<configuration>
<url>http://localhost:8080/manager</url>
<server>tomcat7</server>
<username>admin</username>
<password>admin</password>
</configuration>
</plugin>
</plugins>
</build></strong></span>
3. pom.xml中在project节点下,在插件仓库(plugin repositories)和普通仓库(repositories)中添加以下仓库,保证maven可以从仓库中下载到tomcat-maven-plugin插件。
<span style="font-family:Comic Sans MS;"><strong> <repositories>
<repository>
<id>people.apache.snapshots</id>
<url>
http://repository.apache.org/content/groups/snapshots-group/
</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>apache.snapshots</id>
<name>Apache Snapshots</name>
<url>http://repository.apache.org/content/groups/snapshots-group/ </url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories></strong></span>
4. maven的setting.xml配置
修改maven安装目录下的conf目录下的setting.xml(前提是安装配置好本地maven)
在<servers>标签中加入
<span style="font-family:Comic Sans MS;"><strong><server>
<id>tomcat6</id>
<username>admin</username>
<password>admin</password>
</server>
<server>
<id>tomcat7</id>
<username>admin</username>
<password>admin</password>
</server> </strong></span>
注意这里的用户名、密码必须为manager-gui角色的用户,这里要与之前tomcat配置时的角色对应起来.
5.启动tomcat
在项目上点击右键 Run As 选择Maven build...出现如下界面
在上面的Goals中添加:package tomcat6:redeploy ,这个表示运行Maven build时将项目打包,同时部署到tomcat上。在base directory 里选择要部署的web项目
6.点击Run As --->Maven build ,然后就会对项目进行打包,会自动下载所需要的插件并在Console启动tomcat
注意观察console中的信息,如果最后显示Build Success则说明打包部署成功,这成功完成之前,我遇到了一些小问题,主要是jar包下载不下来的问题,
因为网速太慢所以总是Build Failure,最后网速快的时候终于Build Success,我的显示结果如下:
上面出现了 Skipping non-war project,原来是在pom.xml文件中将<packaging>jar</packaging> 改成war,就可以了,运行结果如下: