在Maven项目中实现热部署
wangyq
使用maven作为项目管理工具,以jetty-maven-plugin插件作为内置的J2EE容器进行web项目开发,在很多时候需要实现项目代码的热部署,包括java编译后的class文件,Css\Js\Html等静态资源,视图模板如FreeMarker、Velocity、Httl等,都需要实现热部署,下面讲解下实际开发工作中的解决办法:
1、使用 jetty-maven-plugin插件作为项目内嵌容器的话,是没法直接使用Myeclpse10自带的Servers面板中的部署功能,这时为了避免每次自己手动去执行“Run as -->Maven build-->clean compile package...”等命令,需要自己配置一个外部工具来提供一个快捷的启动方式,配置步骤如下:点击菜单“Run-->External Tools-->External Tools Configurations”,
在Main标签中输入Maven的安装目录地址,Arguments中填入"Jetty:run"的命令,Working Directory选择当前正在开发的项目,在Environment标签中,添加MAVEN_OPTS标签,标签值为“-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4010,server=y,suspend=y”,解释下suspend=y表示当遇到代码中打的断点时挂起当前线程以进行调试,Server=y表示已服务器模式运行(相对于client模式),addres=4010表示通过该端口对提供监听(4000端口会被QQ占用不推荐),-Xdebug是通知JVM工作在DEBUG模式下,-Xrunjdwp是通知JVM使用(java debug wire protocol)来运行调试环境。该参数同时了一系列的调试选项:transport指定了调试数据的传送方式,,dt_socket是指用SOCKET模式,另有dt_shmem指用共享内存方式,其中,dt_shmem只适用于Windows平台。然后在Commen标签中,选中Display in favorites menu(External Tools),这样该工具就会在控件工具栏中显示出来,可以直接点击使用了;
2、使用maven管理项目的时候,需要通过调用remote java Application实现对本机上运行的maven项目的运行监控,需要配置的过程如下,选中项目右键-->Debug AS-->debug configurations 后在面板中选择“Remote Java Application”新建一个配置:
在port中设置和MAVAEN_OPTS中相同的端口号,在Commen标签中选择在Display in favorites menu(Debug),就可以了;
3、设置Jetty的一些参数,以实现热部署;Jetty启动时候需要读取webdefault.xml文件的内容,在webdefault.xml定义useFileMappedBuffer为false即可实现(开发时建议设为false,正式运行的时候建议设为true以提高系统响应速度),另外建议将 <locale-encoding-mapping>中zh的编码也设置成UTF-8(默认是GBK,有时候会出现乱码);该xml文件提供在附件中了,用户可以自己去jetty的jar包中找该文件修改下参数值就可以了;修改完成后,将该文件放在src/main/resources/下面,然后在POM.XML中配置该文件:
<plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>8.1.12.v20130726</version> <configuration> <scanIntervalSeconds>10</scanIntervalSeconds> <webAppConfig> <contextPath>/gtcloud</contextPath> <defaultsDescriptor>src/main/resources/webdefault.xml</defaultsDescriptor> </webAppConfig> </configuration> </plugin>
这一步实现完成后能完成对静态资源(CSS\JS\IMAGE等)的热部署;如果需要实现对class文件的热部署,还需要在之前的外部工具的环境变量中添加参数,在MAVEN_OPST中继续添加“-Djetty.reload=automatic -Djetty.scanIntervalSeconds=5”以实现对java文件的热部署;
4、另外还有一些模板文件如Velocity\Freemarker\Httl等,因为存放位置是在WEB-INF/templates下面,很多时候文件改动也不能实现热部署,这时候需要结合具体的模板来修改,比如Httl(这是淘宝推荐使用的视图模板技术)可以在MAVEN_OPTS中继续追加参数“-Dhttl.reloadable=true”来实现,其他的模板基本实现也都差不多;
最终的MAVEN_OPTS中的参数值为:“-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4010,server=y,suspend=y -Djetty.reload=automatic -Djetty.scanIntervalSeconds=5 -Dhttl.reloadable=true”;
5、最后一步验证以上步骤是否正常,启动服务(启动外部程序实现对指定端口的监听),然后在启动Remote Java Application来实现运行监控;
点击按钮后console会打印Listening for transport dt_socket at address: 4010 的提示信息
点击后会使出容器启动信息和项目信息;这时候更改任何文件,刷新页面,页面都会显示出最新效果~
结合上面4个步骤,项目中所遇到的所有文件的修改都能实现热部署了,也不用借助于JRebel等插件提供的额外功能,一切都是这么滴简单~~~
--------------------------------------
ps:不好意思,我之前上传的附件中没有把webdefault.xml的配置文件放上来,抱歉啊,现在补上了;class文件的自动加载实际上是有赖于这个xml文件的。
相关推荐
当我们使用Maven构建Java Web项目时,结合Jetty服务器,可以实现项目的热部署功能,即在开发环境中修改代码后无需重新启动服务器,改动就能实时生效,极大地提高了开发效率。 在Maven项目中启用Jetty热部署,主要...
在进行Maven工程的Tomcat热部署详解时,首先需要掌握Java后台开发中对于Tomcat热部署的基本知识。这涉及到Java环境的搭建,Tomcat的安装,以及Maven工程中对于热部署的配置方法。 Java环境的搭建是热部署的前提。在...
本篇将详细介绍如何通过Maven集成Tomcat,实现项目的热部署,从而提高开发效率。 首先,集成Maven与Tomcat的核心在于Maven的插件管理。我们需要在项目的`pom.xml`文件中引入`maven-eclipse-plugin`和`maven-war-...
### Maven项目热部署与Nginx反向代理负载均衡详解 #### Maven项目热部署 热部署,也称为热更新,是指在服务器不重启的情况下更新应用的功能。这种方式在开发过程中非常实用,可以有效减少每次修改代码后重启服务器...
在用maven项目的时候,很多时候不想去再把项目部署到Tomcat上,然后发布并启动,这个时候我们就可以运用Tomcat热部署来配置,只需要再maven的配置文件加上一小段代码即可,非常方便! 启动的时候直接:右键项目--...
** Maven多模块项目详解 ** ...通过这个实例源码,你可以学习如何在Eclipse中配置Maven多模块项目,并结合Jetty进行热部署。了解并实践这些知识点,将有助于你快速构建和调试Java Web项目,提高开发效率。
在本文中,我们将学习如何使用 Intellij IDEA 建立一个基于 Maven 管理的 Web 项目,并配置 Jetty 热部署。 知识点 1:Intellij IDEA 中的 Maven 项目 Maven 是一个基于项目对象模型(Project Object Model,POM)...
标题中的“配合m2eclipse,改造tomcatPluginV321根据maven的依赖自动热部署”涉及了两个主要的开发工具集成:M2Eclipse(Maven插件)和Tomcat Plugin V321,以及它们如何协同工作以实现基于Maven依赖的自动热部署。...
** Maven构建并热部署简单Web项目 ** 在Java Web开发中,Maven是一个不可或缺的工具,它通过自动化构建过程,管理项目的依赖关系,使得开发者能够更专注于代码编写。本篇文章将详细讲解如何使用Maven来构建并实现一...
这个过程涉及到了源码管理和自动化构建工具Maven,以及集成开发环境Eclipse中的服务器适配器Tomcat,它们共同助力实现项目的热部署,即代码修改后无需重启服务器即可看到更新效果。 首先,Maven是一个强大的项目...
【 Maven 热部署在 Eclipse 和 Tomcat 中的实践】 Maven 是一个强大的构建工具,广泛用于Java项目管理,它负责构建、依赖管理和项目信息管理。在开发Web应用程序时,结合Eclipse集成开发环境(IDE)和Tomcat服务器...
本文将详细介绍如何使用Maven安装插件并实现Glassfish的热部署,以提高开发效率。 首先,我们需要确保Maven已经正确安装并集成到Eclipse开发环境中。在Eclipse中,可以通过Help -> Install New Software...,然后...
IDEA配置热部署IDEA配置热部署IDEA配置热部署IDEA配置热部署
通过上述步骤,我们不仅配置了Tomcat的管理用户,定义了Maven中的本地服务器,还创建了一个可以进行热部署的Maven Web项目。这对于快速迭代开发、减少等待时间有着显著的积极作用。然而,需要注意的是,虽然热部署...
在IntelliJ IDEA中,我们可以使用maven插件来实现tomcat的热部署。maven是apache开发的一款基于项目对象模型(POM)的项目管理工具。它可以帮助开发者自动化编译、测试、打包、部署等步骤。 要使用maven实现tomcat...
- **Options**:设置热部署等功能。 #### 五、总结 通过上述步骤,我们不仅创建了一个Maven Web项目,还学习了如何利用IntelliJ IDEA进行项目配置、打包和部署。这对于开发基于Java的Web应用程序来说是非常重要的...
标题中的"update-site-jrebel eclipse maven热部署插件"指的是Eclipse集成开发环境(IDE)中的一个插件更新站点,它专门针对JRebel和Maven项目提供了热部署功能。JRebel是一款强大的Java应用热部署工具,能够实现在...
然而,手动部署在大型项目或持续集成环境中并不高效,这就引出了"Maven-Tomcat插件"。 Maven提供了tomcat7-maven-plugin(对于Tomcat 7)和tomcat8-maven-plugin(对于Tomcat 8及以上版本),这些插件允许我们在...
现在,当你在IDEA等开发环境中进行代码修改后,只需要运行Maven的`tomcat7:redeploy`命令,就可以自动将修改后的应用重新部署到远程Tomcat服务器上,实现了热部署。 然而,需要注意的是,虽然这种方式提高了部署...