思路:配置 Eclipse 自动执行一个Ant脚本,在Ant脚本内自己定义热部署的步骤,这样在每个文件更新后就可以自动部署到服务的目录中了。
1.右健项目工程--builders--import--选择当前项目下的build.xml,对于我现的工程,Ant 文件在D:\eclipse\workspace\工程名\plugins\hotcopy\hot-copy.xml
2.选中选择的build.xml--Edit--targets--Auto Build--set Targets--选择要自动build的targetName,对于我的工程,targetName为 工程名hot-copy.xml
3、配置build参数,在下面界面上可以看到
-Dresource_loc=${resource_loc}
-Dresource_path=${resource_path}
-Dresource_name=${resource_name}
-Dwar.deploy.dir=D:\jboss-4.0.2\server\default\deploy\bap.war
war.deploy.dir:表示服务器的路径,需要改变,其他三个参数只有原样复制即可。
其配置界面如下:
其内容如下:
<?xml version="1.0"?> <project name="deploy"> <!--引用了ant-contrib-1.0b3.jar包,需要放到当前目录\lib目录下-->
<path id="ant.contrib.lib"> <fileset dir=""> <include name="**/*jar" /> </fileset> </path> <taskdef resource="net/sf/antcontrib/antcontrib.properties"> <classpath> <path refid="ant.contrib.lib" /> </classpath> </taskdef> <target name="deploy.hotcopy"> <!--resource_loc:需要传入的变量,在上的Eclipse图中可以看到,引用Eclipse的环境变量即可--> <available property="is.present" file="${resource_loc}" /> <available property="is.dir" file="${resource_loc}" type="dir" /> <condition property="is.file"> <and> <isset property="is.present" /> <not> <isset property="is.dir" /> </not> </and> </condition> <antcall target="deploy.hotcopy.webdocs" /> </target> <target name="deploy.hotcopy.webdocs" if="is.file"> <if> <!--只有当前的文件、文件夹的路径中存在webdocs才进行拷贝,只是根据工程目录规划决定的-->
<contains string="${resource_path}" substring="\webdocs" /> <then> <propertyregex property="webdocs-path" input="${resource_path}" regexp=".*\\webdocs(\\.*)\\${resource_name}" select="\1" casesensitive="true" /> <if> <isset property="webdocs-path" /> <then> <property name="target.dir" value="${war.deploy.dir}${webdocs-path}" /> </then> <else> <property name="target.dir" value="${war.deploy.dir}" /> </else> </if> <copy todir="${target.dir}" preservelastmodified="true" file="${resource_loc}" /> </then> </if> </target> </project>
对于一个普通的XML文件,打印出resource打的相关变量,有利于理解.
[echo] resource_loc:D:\eclipse\workspace\工程名\src\webdocs\decorators\level-2-page-decorator.jsp
[echo] resource_path:\工程名\src\webdocs\decorators\level-2-page-decorator.jsp
[echo] resource_name:level-2-page-decorator.jsp
做了上面的配置,Eclipse会检查每一个新修改的文件,看是否需要拷贝,所以Eclipse 的速度会变慢。所以实现的效果并不是太好,但是这种机制很好,Eclipse自动调用我们编写的Ant文件,可以执行任何操作。