之前Eclipse调试Web应用时用FileSync同步vm及class文件,不过那样每次下载新的分支都要设定一次,很不方便。最近在做页面,想想肯定有更简单的办法可以解决。
首先了解下原来本机部署的工程为何不会自动同步,下图是简化过的JBOSS部署启动时序图:
eclipse插件默认是将应用打war包并移动部署,在JBOSS启动时会再复制war包并解包至JBOSS的tmp目录(避免与deploy目录下的应用冲突)。
这样我们在本地修改vm文件后,也只会同步到第一个war包,velocity真正读取的文件并不会变化。
通过代码可以看到,如果不做压缩直接deploy应用文件夹,则不需要做后续的复制解包操作,部署文件与读取的文件相同,问题也就解决了,同时部署也会快很多。
有两种办法可以热部署文件夹:
1.通过日志发现build文件是jboss323.xml,修改该文件中关于"deploy.j2ee.web"的配置内容如下(即将打包改为复制文件夹):
<target name="deploy.j2ee.web">
<property name="deploy.dir" location="${server.publish.dir}/${module.name}.war" />
<mkdir dir="${server.publish.dir}/${module.name}.war" />
<copy todir="${server.publish.dir}/${module.name}.war">
<fileset dir="${module.dir}">
<include name="**/*.*"/>
<exclude name="**/*.war"/>
</fileset>
</copy>
</target>
2.下载安装新的JBOSS Server:JBossAS Tools
操作:在window->Perferences->Server->Runtime environments->Add...,在新的列表中选择JBossAS Tools
安装后新建server,并将部署设置为按目录部署
另外,JBOSS对于是否解压,是否放到临时目录提供了MBean管理,也可以通过配置文件修改,不过那样也会引来新的问题,不如安装新Server来得方便。
整完后,不管代码还是vm,一保存就生效,调试起来还是比较爽,关键是新切分支也不用做一堆同步设置了。