IntelliJ+AntBuild+Tomcat实现Maven站点的热部署
这段时间要研究WebGL技术,做一下三维建模项目,涉及到较多的前端编码。eclipse编译器那令人着急的编码提示功能,以及丑恶的界面对项目的开展造成了一定的阻碍。为解决这个问题,转向IntelliJ Idea这款IDE,下载了最新版,完成破解,开启新征程。
历史证明摸着石头过河,总是要喝两口水的。征服之路:一、创建多模块的Maven项目,与eclipse建项过程差不多,略过不提;二、通过Tomcat发布web站点后,怎样实现文件的热加载,即实时同步。这个问题比较蛋疼,网上一般提到的说法就是Tomcat在build时,发布展开的war包,即war exploded模式。但是我按照网友介绍,进行了一系列设置后,发现我的webapp文件编辑后不能很好的同步更新。js文件还成功了几次,freemarker文件压根没反应,过了一晚上再看,连js的更新也没有了。折腾了半天也没个结果,有网友说用Jrebel插件,可这玩意儿要收费,尝试着破解后发现还不能与IDE兼容,无奈放弃。后来考虑直接把webapp资源拷贝到发布目录吧,为此选择了Ant Build方式。接下来,我就以这个建设的项目为例,讲解下自己的web资源热加载实现过程。
一、多模块Maven项目的结构展示
参考:理解 IntelliJ IDEA 的项目配置和Web部署
Project Structure > Project Setttings > Artifacts:项目打包设置方案中添加web站点的两种打包方案,war是以生成war包再部署的方式发布,war exploded是通过生成展开目录架构的文件夹的方式发布。
war exploded在文件更新自动同步时起作用,不必每次都打war包。

二、配置Tomcat运行方式
参考:IntelliJ IDEA14 + tomcat 设置热部署


三、配置Ant Build构建方案,同步项目资源文件到Debug的发布目录下
1、我在web项目根目录下添加一个build.xml的ant配置文件,配置中添加一个策略,将src/main/webapp/目录下的文件拷贝到发布目录 target/train-simulate-web-1.0-SNAPSHOT/ 下。project.basedir属性设置为".",指向配置文件所在的根目录。这里需要说一下,debug模式下,tomcat直接运行的是war exploded发布输出的目录。

<?xml version="1.0" encoding="UTF-8"?>
<project name="" default="fileCopy" basedir=".">
<property name="webapp_dir" value="src/main/webapp/"/>
<property name="to_tomcat" value="target/train-simulate-web-1.0-SNAPSHOT/"/>
<target name="fileCopy">
<copy todir="${to_tomcat}">
<fileset dir="${webapp_dir}"></fileset>
</copy>
</target>
</project>
2、将Ant Build的拷贝策略附加到项目的编译动作上(自动化实现的重要步骤)。我这里设置的是在编译前执行Ant构建。这一步设置完成后,结合Tomcat配置中的update classes and resources设置。每次执行update操作或从IDE上失去焦点,都将触发项目的build操作,build操作再触发Ant构建的执行,从而达到web资源的实时更新目的。

小结:
配置到这里,web项目的资源文件,class文件都能够实现自动化的更新部署了,不必每次更新都去人为的重新发布。效果上凑合可以满足我目前的心理需求底限了。不过这种搞法,还是无法解决web外的其他jar包模块的自动发布问题,因为jar项目修改后,需要打包成新的jar包,替换到tomcat发布目录下。但是实际上在debug模式下,jar包文件被进程占用,是没办法重新替换的。这种情况,就只能重启DEBUG调试了。假如我对IDE的理解有误,事实上有更好的方案来处理热部署问题,欢迎留言告诉我一声!
IntelliJ+AntBuild+Tomcat实现Maven站点的热部署的更多相关文章
- idea maven jetty插件热部署
maven tomcat插件好像无法进行热部署,jetty可以如下配置实现热部署,但是idea无法进行自动编译,所以需要如下快捷键 Ctrl+Shift+F9,编译 Ctrl+F9,生成项目 < ...
- tomcat重启应用和tomcat重启是两回事。热部署就是重启应用
tomcat重启应用和tomcat重启是两回事.热部署就是重启应用 tomcat重启应用和tomcat重启是两回事.热部署就是重启应用 tomcat可以设置检测到新的class后重启该应用(不是重启t ...
- maven+tomcat6-maven-plugin实现热部署及调试
maven project,特别是maven module项目默认情况下是是无法直接通过tomcat等容器部署的,如图,我要部署fastdev_web这个maven module,可以看出在tomca ...
- maven tomcat7 远程热部署
在maven项目开发中,一般推荐使用jetty进行开发调试.但是在项目发布的时候要求使用tomcat7作为发布服务器,为此在maven中配置了tomcat7插件,以支持项目在外部tomcat7进行远程 ...
- maven实现项目热部署
1.Tomcat的配置 我们需要实现热部署,自然就需要通过maven操作tomcat,所以就需要maven取得操作tomcat的权限,现在这一步就是配置tomcat的可操作权限. 在tomcat的安装 ...
- jenkins+maven+Tomcat8实现热部署
个人记录 公司使用jenkins实现代码自动更新并部署 采用jenkins安装方式为war包,版本为:2.138.3,启动方式为Tomcat启动jenkins, 该博客操作步骤有些地方进行简化,各位需 ...
- 使用maven的tomcat:run进行web项目热部署
近期又又一次看了一下maven的东西,事实上主要是由于去了解Jenkins,后期或许会补充jenkins的博文. 怎么在eclipse里面创建maven webproject,这边就不介绍了,參见:h ...
- IDEA Maven Jetty Jrebel 热部署
准备:1.下载Jrebel的离线安装包,版本是6.4.3版本. 2.下载Jrebel的破解补丁包,同样也是针对6.4.3版本的 Jrebel离线安装包官网下载地址:https:/ ...
- tomcat使用spring-loaded实现应用热部署
springloaded官方说明: Spring Loaded is a JVM agent for reloading class file changes whilst a JVM is runn ...
随机推荐
- CAP理论、BASE理论
从分布式一致性谈到CAP理论.BASE理论 https://www.cnblogs.com/szlbm/p/5588543.html 问题的提出 在计算机科学领域,分布式一致性是一个相当重要且被广泛探 ...
- Centos7 安装 MongoDB4.0
目录 安装包下载 MongoDB安装 启动数据库 补充 小结 诚邀访问我的个人博客:我在马路边 更好的阅读体验点击查看原文:Centos7安装MongoDB4.0 原创博客,转载请注明出处 @ 由于项 ...
- Git 版本管理工具(一)
转自:http://blog.csdn.net/ithomer/article/details/7527877 Git 是一个分布式版本控制工具,它的作者 Linus Torvalds 是这样给我们介 ...
- MQTT事件回调流程
TLS 如下强调: 1.每个IOT设备应该有一对独有的公钥/私钥 2.SERVER的认证通过SERVER的"root certificate" SSL产生过程: $ openssl ...
- Xmodem通信协议实例
在工作时串口通信的过程中需要传输文件,这里就就需要使用通信协议,此时选择的是Xmodem协议作简要研究 1.什么是Xmodem协议 Xmodem协议是串口通信中广泛使用到的异步文件传输协议.以128字 ...
- Rails:Rails使用sqlite3数据库 及数据操作基本命令
Rails默认使用sqlite3做为数据库,虽然很多人更喜欢mysql.但如果是学习用,sqlite3够了,因为它轻量,不需要安装. 首先对sqlite3做个简短的介绍:1.sqlite3不需要配置, ...
- web基础 (三) CSS
css 层叠样式表 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明. selector { property: value; property: value; ... property: ...
- 开发环境入门 linux基础(部分)虚拟内存,rpm和yum安装
虚拟内存,rpm和yum安装 文本中查找 /内容 替换:扩展模式下(:)%s /替换目标/要替换的文件/ (只替换第一个)(后边加g全部替换) :set u添加行号 raid lvm逻辑卷 df - ...
- MFC鼠标键盘消息处理
void CMainWindow::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags ){ )&&(GetKeyState(VK_LBUT ...
- ORACLE——日期时间格式化参数详解 之一
2.日期格式化参数详解 2.1 -/,.;: 指定返回字串分隔符 SQL> select to_char(sysdate,'yyyy.mm.dd') from dual; TO_CHAR(SYS ...