文档章节

在Eclipse中Tomcat和Maven插件相互配合进行热部署

chaun
 chaun
发布于 2015/10/14 12:06
字数 1131
阅读 39
收藏 0
点赞 0
评论 0
关于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文件

本文转载自:http://zheng12tian.iteye.com/blog/1772330

共有 人打赏支持
chaun
粉丝 85
博文 262
码字总数 96237
作品 0
深圳
高级程序员
Eclipse Maven Tomcat的利用配置

1.事先准备 m2eclipse插件中其实内嵌了Maven,但个人更偏向于用独立的Maven(可以自由选择版本啦,偶尔可以在命令行中跑Maven命令啦)。 下载Apache Maven:http://maven.apache.org/,关于环...

躺着的S ⋅ 2013/08/03 ⋅ 4

maven实现多模块热部署

一、背景 基于maven的项目工程都会按模块划分,每个模块最终形成一个jar包,那么每次对模块的修改就需要重新打包,这样的工作重复而繁琐,以前的热部署解决方案都是只针对web模块的修改,如能...

小咔蹭 ⋅ 2013/09/28 ⋅ 1

使用Maven如何debug和热部署

最近尝试将项目用Maven管理,Maven管理能力确实不错,但在开发时,却遇到了一些问题,望大家指点: 1、debug问题: 我是使用Maven的tomcat插件:tomcat-maven-plugin在eclipse里直接集成tom...

nick_chen ⋅ 2013/01/21 ⋅ 10

Maven项目部署到tomcat(内嵌tomcat)

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

啊莫 ⋅ 2014/04/27 ⋅ 0

maven plugin在tomcat 热部署

前言: 此处的方法适用于tomcat6 和 tomcat7,对于最新的tomcat8还没有进行过測试,有兴趣的同学能够自己測一下. 总共分为五步: 1.在tomcat中配置用户权限,即加入管理员帐号 2.在maven中加入ser...

技术mix呢 ⋅ 2017/11/16 ⋅ 0

maven tomcat plugin实现热部署

前言: 此处的方法适用于tomcat6 和 tomcat7,对于最新的tomcat8还没有进行过测试,有兴趣的同学可以自己测一下. 总共分为五步: 1.在tomcat中配置用户权限,即添加管理员帐号 2.在maven中添加ser...

chaun ⋅ 2015/10/14 ⋅ 0

vaadin ---用maven创建vaadin 的工程

使用maven 命令创建vaadin 工程: mvn archetype:generate -DarchetypeGroupId=com.vaadin -DarchetypeArtifactId=vaadin-archetype-clean -DarchetypeVersion=LATEST -DgroupId=your.compa......

lifigure ⋅ 2011/12/21 ⋅ 2

Maven 远程打包

官方提供了Maven插件用于部署基于Maven的Web应用,不同版本Tomcat使用的插件不同,不同版本插件的使用也有一定区别,详细信息可参考http://tomcat.apache.org/maven-plugin.html。下面记录的...

逝去的回忆 ⋅ 2016/10/12 ⋅ 0

Jetty插件实现热部署(开发时修改文件自动重启Jetty)

在pom.xml文件中配置Jetty插件的参数:scanIntervalSeconds 然后使用正常运行或者Debug运行都可以,不过时间应该在3秒以内会发现然后重启。 如果使用Eclipse的Jetty插件,很遗憾,没找到解决...

easonjim ⋅ 2017/11/12 ⋅ 0

intellij部署_2

1.黑色主题 中文乱码修改 2.WEB项目的部署 以及自动编译 3.多项目的同时部署 4.相关插件提高工作效率 1.JRebel插件 实现热部署 2.Tasks插件 集成任务管理 5.其它的一些技巧配置(未完待续) ...

stephen_wu ⋅ 2016/08/19 ⋅ 1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

NFS介绍 NFS服务端安装配置 NFS配置选项

NFS介绍 NFS是Network File System的缩写;这个文件系统是基于网路层面,通过网络层面实现数据同步 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导...

lyy549745 ⋅ 26分钟前 ⋅ 0

Spring AOP 源码分析 - 筛选合适的通知器

1.简介 从本篇文章开始,我将会对 Spring AOP 部分的源码进行分析。本文是 Spring AOP 源码分析系列文章的第二篇,本文主要分析 Spring AOP 是如何为目标 bean 筛选出合适的通知器(Advisor...

java高级架构牛人 ⋅ 49分钟前 ⋅ 0

HTML-标签手册

标签 描述 <!--...--> 定义注释。 <!DOCTYPE> 定义文档类型。 <a> 定义锚。超链接 <abbr> 定义缩写。 <acronym> 定义只取首字母的缩写。 <address> 定义文档作者或拥有者的联系信息。 <apple......

ZHAO_JH ⋅ 50分钟前 ⋅ 0

SylixOS在t_main中使用硬浮点方法

问题描述 在某些使用场景中,应用程序不使用动态加载的方式执行,而是跟随BSP在 t_main 线程中启动,此时应用代码是跟随 BSP 进行编译的。由于 BSP 默认使用软浮点,所以会导致应用代码中的浮...

zhywxyy ⋅ 58分钟前 ⋅ 0

JsBridge原理分析

看了这个Github代码 https://github.com/lzyzsd/JsBridge,想起N年前比较火的Hybrid方案,想看看现在跨平台调用实现有什么新的实现方式。代码看下来之后发现确实有点独特之处,这里先把核心的...

Kingguary ⋅ 今天 ⋅ 0

Intellij IDEA神器常用技巧五-真正常用快捷键(收藏级)

如果你觉得前面几篇博文太啰嗦,下面是博主多年使用Intellij IDEA真正常用快捷键,建议收藏!!! sout,System.out.println()快捷键 fori,for循环快捷键 psvm,main方法快捷键 Alt+Home,导...

Mkeeper ⋅ 今天 ⋅ 0

Java 静态代码分析工具简要分析与使用

本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能、特性等方面对它们进行分析和比较,...

Oo若离oO ⋅ 今天 ⋅ 0

SpringBoot自动配置小记

spring-boot项目的特色就在于它的自动配置,自动配置就是开箱即用的本源。 不过支持一个子项目的自动配置,往往比较复杂,无论是sping自己的项目,还是第三方的,都是如此。刚接触会有点乱乱...

大_于 ⋅ 今天 ⋅ 0

React jsx 中写更优雅、直观的条件运算符

在这篇文字中我学到了很多知识,同时结合工作中的一些经验也在思考一些东西。比如条件运算符 Conditional Operator condition ? expr_if_true : expr_if_false 在jsx中书写条件语句我们经常都...

开源中国最帅没有之一 ⋅ 今天 ⋅ 0

vim编辑模式与命令模式

5.5 进入编辑模式 从编辑模式返回一般模式“Esc” 5.6 vim命令模式 命令 :“nohl”=no high light 无高亮,取消内容中高亮标记 "x":保存退出,和wq的区别是,当进入一个文件未进行编辑时,使...

弓正 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部