`

在Eclipse中Tomcat和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文件,文件内容如下:
<Context path="/tools" reloadable="true" docBase="D:\workspace\tools\src\main\webapp" workDir="D:\workspace\tools\work" >  
</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,增加如下配置:
<tomcat-users>
	<role rolename="manager"/>
	<user username="admin" password="admin" roles="manager"/>
</tomcat-users>


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


在settings.xml文件中还可以设置用Maven创建工程时,jdk的版本,因为默认是1.5。大家现在都是1.6了,所以这个默认设置很不爽,可以增加如下片段:
	<profile>  
		<id>jdk-1.6</id>  
		<activation>  
			<activeByDefault>true</activeByDefault>  
			<jdk>1.6</jdk>  
		</activation>  
		<properties>  
			<maven.compiler.source>1.6</maven.compiler.source>  
			<maven.compiler.target>1.6</maven.compiler.target>  
			<maven.compiler.compilerVersion>1.6</maven.compiler.compilerVersion>  
		</properties>  
	</profile>


五、剩下的就是配置pom文件了,我将我的springMvc学习工程的pom文件贴出来,如下所示:
<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.zhengtian.study</groupId>
	<artifactId>spring-mvc</artifactId>
	<packaging>war</packaging>
	<version>0.0.1-SNAPSHOT</version>
	<name>spring-mvc Maven Webapp</name>
	<url>http://maven.apache.org</url>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>3.1.1.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>3.1.1.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>3.0-alpha-1</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>commons-lang</groupId>
			<artifactId>commons-lang</artifactId>
			<version>2.6</version>
		</dependency>
	</dependencies>
	<build>
		<finalName>spring-mvc</finalName>
		<plugins>
			<plugin>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.1.1</version>
			</plugin>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>tomcat-maven-plugin</artifactId>
				<version>1.1</version>
				<configuration>
					<url>http://localhost:8080/manager</url>
					<server>tomcat6-manager</server>
					<username>admin</username>
					<password>admin</password>
				</configuration>
			</plugin>
		</plugins>
	</build>
</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文件
  • 大小: 158.5 KB
  • 大小: 139.2 KB
  • 大小: 137.2 KB
分享到:
评论

相关推荐

    maven-eclipse-tomcat热部署

    利用maven创建Web项目,并在eclipse测试部署web项目

    Maven +Tomcat+m2eclipse的热部署(hot deploy)

    Maven +Tomcat+m2eclipse的热部署(hot deploy)

    tomcat-maven-plugin

    maven-tomcat-plugin让maven与tomcat配合得很好。它可以把应用部署到Tomcat服务器,也可以把tomcat作为内嵌服务器启动,就像jetty一样。 使用JPDA启动tomcat的远程调试功能。这样就能与eclipse配合起来,轻松地实现...

    Eclipse4.5.2+maven3.3.9+tomcat7+JRebel6.4.3实现热部署

    Eclipse Mars.2 Release (4.5.2),maven 3.3.9,tomcat7,JRebel6.4.3,包内包含JRebel与详细使用说明,纯手写,且亲测可用,eclipse,maven,tomcat可自行下载,JRebel为破解版,码字辛苦,望各位大神给1分辛苦费

    配合m2eclipse,改造tomcatPluginV321根据maven的依赖自动热部署

    NULL 博文链接:https://xunclapton.iteye.com/blog/795561

    Idea部署tomcat服务实现过程图解

    IDEA2020导入非maven项目并部署tomcat的方法在idea中将创建的java web项目部署到Tomcat中的过程图文详解idea打包成war包部署到tomcat及访问路径问题(图文详解)Idea配置maven-tomcat-plugin插件实现项目部署IDEA导入...

    springmvc_test

    eclipse+tomcat+Springmvc+maven 热部署 有需要的拿走

    Jetty中文手册

    热部署 Context提供者 如何部署web应用 webApp提供者 如何部署第三方产品 部署展开形式的web应用 使用Jetty进行开发 如何使用Jetty进行开发 如何编写Jetty中的Handlers 使用构建工具 如何在Maven中使用Jetty 如何在...

    Eclipse开发分布式商城系统+完整视频代码及文档

    │ 06.tomcat热部署.avi │ 07.服务层热部署-tomcat安装.avi │ 08.服务层热部署-完成.avi │ 09.portal工程部署.avi │ 10.配置nginx反向代理,测试系统.avi │ 11.项目总结.avi │ 12.项目中遇到的问题.avi │ 13....

    Java 实时社区论坛.zip

    安装需求:Maven3 、MySQL5 、Jetty9 /Tomcat9 (理论上只要实现了 JSR356 规范的 Servlet 容器都可以)下载源码解压后修改 src/main/resources/local.properties 中的数据库配置,并创建数据库可能需要修改 latke....

Global site tag (gtag.js) - Google Analytics