eclipse-tomcatplugin部署maven项目方式六

关于m2eclipse与tomcatplugin插件如何相互配合进行热部署


没有使用Maven插件时,如何进行tomcat热部署 

一、首先在Eclipse中安装tomcatplugin插件,详细安装方法见 http://zheng12tian.iteye.com/blog/1772322 

二、配置tomcat 
在没有引入Maven前,如果我们想要在修改开发代码后,不重启服务器,让Tomcat自动重新加载Workspace中项目的class,通常我们的做法是: 

1、选中你的工程,然后同时按住Ctrl+Enter,在弹出框中选中Tomcat选项,然后在 Is a Tomcat Project打上勾,在 Context name填入工程名,例如:tools。然后在 Subdirectory to set as web application root(optional)工程发布的目录中填入工程根目录:/src/main/webapp。上述的做法的最终目的就是为了在tomcat-6.0.32\conf\Catalina\localhost路径下生成一个xml文件,文件内容如下: 
Java代码   收藏代码
  1. <Context path="/tools" reloadable="true" docBase="D:\workspace\tools\src\main\webapp" workDir="D:\workspace\tools\work" >    
  2. </Context>   


2、设置java源文件编译路径到src/main/webapp/WEB-INF/classes目录下 

3、将项目依赖的jar包全部拷贝到src/main/webapp/WEB-INF/lib目录下,将相关的配置文件拷贝到src/main/webapp/WEB-INF/classes目录下。 

三、如此,每次当代码出现改动时,tomcat会自动感知修改,然后进行加载,不需要手动部署项目,也不需要重启服务器。 


当使用Maven插件后,如何进行tomcat热部署 

当使用Maven后,由于Maven将java文件全部编译到target\classes目录,且jar包也采用引用本地jar包库,因此在src/main/webapp/WEB-INF目录下不会出现classes和lib目录。 

那么如何解决上述问题呢? 
一、首先我们要将Maven工程转变为一个web项目。打开工程属性,在左边选中Project Facets,在右边选中java和Dynamic Web Module(先选java),点击OK。这样,工程就变成一个web工程了。注意java和Dynamic Web Module的版本: 


二、然后我们需对tomcat插件进行一些配置。打开工程属性,在左边选中Deployment Assembly,在右边配置web应用结构,如下图: 


三、配置tomcat的管理员角色,在tomcat安装目录中(我自己的目录为E:\Program Files\tomcat-6.0.32\conf\tomcat-users.xml)tomcat-users.xml,增加如下配置: 
Java代码   收藏代码
  1. <tomcat-users>  
  2.     <role rolename="manager"/>  
  3.     <user username="admin" password="admin" roles="manager"/>  
  4. </tomcat-users>  


四、然后修改Maven的settings.xml的配置文件,增加如下片段,让tomcat-maven-plugin插件可以顺利的访问tomcat的http://localhost:8080/manager/html页面,下面的配置主要是配置访问时需要用到的用户名和密码: 
Java代码   收藏代码
  1. <servers>   
  2.     <server>  
  3.         <id>tomcat6-manager</id>  
  4.         <username>admin</username>  
  5.         <password>admin</password>  
  6.     </server>  
  7. </servers>  


在settings.xml文件中还可以设置用Maven创建工程时,jdk的版本,因为默认是1.5。大家现在都是1.6了,所以这个默认设置很不爽,可以增加如下片段: 
Java代码   收藏代码
  1. <profile>    
  2.     <id>jdk-1.6</id>    
  3.     <activation>    
  4.         <activeByDefault>true</activeByDefault>    
  5.         <jdk>1.6</jdk>    
  6.     </activation>    
  7.     <properties>    
  8.         <maven.compiler.source>1.6</maven.compiler.source>    
  9.         <maven.compiler.target>1.6</maven.compiler.target>    
  10.         <maven.compiler.compilerVersion>1.6</maven.compiler.compilerVersion>    
  11.     </properties>    
  12. </profile>  


五、剩下的就是配置pom文件了,我将我的springMvc学习工程的pom文件贴出来,如下所示: 
Java代码   收藏代码
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
  3.     <modelVersion>4.0.0</modelVersion>  
  4.     <groupId>com.zhengtian.study</groupId>  
  5.     <artifactId>spring-mvc</artifactId>  
  6.     <packaging>war</packaging>  
  7.     <version>0.0.1-SNAPSHOT</version>  
  8.     <name>spring-mvc Maven Webapp</name>  
  9.     <url>http://maven.apache.org</url>  
  10.     <dependencies>  
  11.         <dependency>  
  12.             <groupId>junit</groupId>  
  13.             <artifactId>junit</artifactId>  
  14.             <version>3.8.1</version>  
  15.             <scope>test</scope>  
  16.         </dependency>  
  17.         <dependency>  
  18.             <groupId>org.springframework</groupId>  
  19.             <artifactId>spring-web</artifactId>  
  20.             <version>3.1.1.RELEASE</version>  
  21.         </dependency>  
  22.         <dependency>  
  23.             <groupId>org.springframework</groupId>  
  24.             <artifactId>spring-webmvc</artifactId>  
  25.             <version>3.1.1.RELEASE</version>  
  26.         </dependency>  
  27.         <dependency>  
  28.             <groupId>javax.servlet</groupId>  
  29.             <artifactId>servlet-api</artifactId>  
  30.             <version>3.0-alpha-1</version>  
  31.             <scope>provided</scope>  
  32.         </dependency>  
  33.         <dependency>  
  34.             <groupId>commons-lang</groupId>  
  35.             <artifactId>commons-lang</artifactId>  
  36.             <version>2.6</version>  
  37.         </dependency>  
  38.     </dependencies>  
  39.     <build>  
  40.         <finalName>spring-mvc</finalName>  
  41.         <plugins>  
  42.             <plugin>  
  43.                 <artifactId>maven-war-plugin</artifactId>  
  44.                 <version>2.1.1</version>  
  45.             </plugin>  
  46.             <plugin>  
  47.                 <groupId>org.codehaus.mojo</groupId>  
  48.                 <artifactId>tomcat-maven-plugin</artifactId>  
  49.                 <version>1.1</version>  
  50.                 <configuration>  
  51.                     <url>http://localhost:8080/manager</url>  
  52.                     <server>tomcat6-manager</server>  
  53.                     <username>admin</username>  
  54.                     <password>admin</password>  
  55.                 </configuration>  
  56.             </plugin>  
  57.         </plugins>  
  58.     </build>  
  59. </project>  


六、配置完pom后,最后的就是如何进行部署,启动tomcat服务。 

这里要注意的是去掉在tomcat-6.0.32\conf\Catalina\localhost路径下生成的xml文件,因为我们是通过tomcat的manager动态部署的,所以不需要这个context文件。 

然后,启动tomcat。如果不启动tomcat,tomcat-maven-plugin插件是无法访问tomcat的http://localhost:8080/manager/html页面的。 

最后是输入maven命令,war:exploded tomcat:exploded,该命令的意思就是将maven工程打war包需要的文件都拷贝的target目录,但是不打成war包。然后用目录的方式部署到tomcat,不是war包部署。如下图: 
附件中是完整的Maven的setting.xml文件