Eclipse配置工程自动执行ant实现热部署

思路:配置 Eclipse 自动执行一个Ant脚本,在Ant脚本内自己定义热部署的步骤,这样在每个文件更新后就可以自动部署到服务的目录中了。

一、配置Eclipse 工程自动执行一个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:表示服务器的路径,需要改变,其他三个参数只有原样复制即可。

 

其配置界面如下:

Eclipse配置工程自动执行ant实现热部署_第1张图片

 

二、编写自动部署文件:D:\eclipse\workspace\工程名\plugins\hotcopy\hot-copy.xml

其内容如下:

<?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文件,可以执行任何操作。

你可能感兴趣的:(eclipse,jsp,xml,ant,脚本)