在完成idea工程简单应用后,接下来实现热部署。
简单应用地址:http://wibiline.iteye.com/admin/blogs/2072454
一、安装JRebel插件
1. 在线安装
File->setting或者直接点设置的图标进入
在线下载并安装,安装的插件在C:\当前用户下\.jrebel 和.IntelliJIdea13。
2. 破解插件
下载破解补丁具体要找到对应版本的,这边用的是5.5.2的破解版本(但实际安装的是5.5.3,照样可以使用)将破解版里面的jrebel.lic拷贝到C:\当前用户下\.jrebel 目录下;jrebel.jar替换C:\当前用户\.IntelliJIdea13\config\plugins\jr-ide-idea\lib目录下的jrebel.jar文件
打开idea后,看到jr图标就代表安装插件成功,还有在设置里面会多出Jrebel,如下:
License为valid就代表破解成功了。
二、部署项目工程的两种方式
方式一、结合Artifacts部署项目
1. 打开项目配置project structure
根据项目Modules配置Artificials
2. tomcat加载项目
然后填写应用名称,转到Server页签进行配置
两个地方都修改成Update classes and resource
3. 修改Jrebel参数
设置redeploy时间,这样修改java文件后,jre会自动监测到。(不过这样设置是否会很占内存?)后台会有提示信息,如:2014-05-29 19:13:12 JRebel: Reloading class 'MyServlet'.
经过这三步设置,一般就可以了。这样貌似连rebel.xml都不用生成,就可以实现热部署了。记得以jr方式启动tomcat(就是点那个jr图标了),而不是直接启动tomcat。
方式二、External Source加载项目工程
1. 修改class输出目录
class文件输出到工程本身的WEB-INF目录下
2. tomcat加载项目
选择到web工程的根目录即WebRoot,这个目录直接包含工程本身的jsp、html等文件还有我们配置的class输出内容。这样jsp有修改就可以直接显示,而class就由jre监测。
注:用这种方式加载项目的,在server里面就没有Update classes and resource了
3.生产rebel.xml
右键项目,可以看到Jrebel选项,选择rebel.xml即可自动生成,xml主要内容是监测class目录和web工程目录
4. 设置idea自动编译
这4个步骤设置好,用jr启动tomcat就可以了。
总结:两种方式都是以tomcat目录下localhost的配置文件进行加载项目,配置文件里指定加载的路径。Artifacts方式的,class不仅要生成output,同时在Modules那边也会指定class的生成目录,感觉多生成了一份,没什么必要,不知道这样的好处在哪里,暂时不懂。而External Source加载项目工程的方式,直接在Modules指定class生成目录到本工程下,而jsp本身就是工程下面的,所以在tomcat的配置文件那边直接指定到工程目录下即可。所以个人暂时采用方式二进行处理,用一段时间试试。
遇到的问题:采用方式二部署项目的时候,tomcat启动,找不到工程的jar包,而工程明明有引入对应的jar包了。
问题原因:jar包目录lib跟web根目录同一级别,tomcat启动的时候无法加载到这个lib。虽然项目编译能通过,但发布的时候就会有问题。
问题解决:将lib目录放于WEB-INF目录下即可