本来一直使用jubilder开发,按个F9,要什么包都有了。最近和另外一个公司和做,对方要求的较严格,需要ANT发布给测试部门进行测试。所以花了一个晚上研究ANT。
就简单使用来说,还是比较简单的。主要需要两个文件:
1.build.bat 配置java_home 和 调用ANT,内容如下:
@echo off
set JAVA_HOME=C:/j2sdk1.4.2_04
set ANT_HOME=D:/work/ANT
call D:/work/ANT/bin/ant %1 %2 %3
2.build.xml ANT 配置文件
<?xml version='1.0' encoding='GBK' standalone='yes'?>
<project name="WebTest_project" default="WebTest_package_war">
<!-- name 就不用解释了吧 default 需要配置为最后一个target,或者想要执行的最后一个任务
ANT 是通过依赖关系,来决定target执行的顺序的。-->
<property file="build.properties"/>
<!-- ANT 可以通过properties 定义环境变量,当然,你也可以直接在这里定义,格式如下
WebTest.dest = WebTest_desc
-->
<target name="init">
<echo message="~~~~开始执行ant任务~~~~"/>
</target>
<target name="cleardir" depends="init">
<echo message="1 删除目录"/>
<delete dir="${WebTest.build}"/>
<delete dir="${WebTest.dest}"/>
<delete dir="${WebTest.web}/WEB-INF/classes"/>
<delete dir="${WebTest.web}/WEB-INF/lib"/>
</target>
<target name="makedir1" depends="cleardir">
<echo message="2 创建目录!"/>
<mkdir dir="${WebTest.build}"/>
<mkdir dir="${WebTest.dest}"/>
<mkdir dir="${WebTest.web}/WEB-INF/classes"/>
<mkdir dir="${WebTest.web}/WEB-INF/lib"/>
</target>
<!--引用第二个xml定义文件 depends 为依赖的上一个target -->
<target name="WebTest_build_src" depends="makedir1">
<echo message="一 编译所有的源文件!"/>
<ant dir="." antfile="build_WebTest_src.xml"/>
</target>
<!--将Web路径打包为war,包中包括web页面、
WEB-INF下的
*.xml,
lib/*.jar
classes/*.*
-->
<target name="WebTest_package_war" depends="WebTest_build_src">
<echo message="二 打war包!"/>
<echo message="1 打war包!"/>
<jar jarfile="${WebTest.dest}/ssip.war">
<fileset dir="${WebTest.web}">
<!--<include name="**/*.*"/>-->
</fileset>
</jar>
</target>
</project>
--------------------------------------------------------------------------------------------------------------------------
3. build_WebTest_src.xml
<?xml version='1.0' encoding='GBK' standalone='yes'?>
<project name="WebTest_src" default="copylib" basedir=".">
<property file="build.properties"/>
<property name="cc.code" value="${WebTest.code}"/>
<property name="cc.src" value="${cc.code}/src"/>
<property name="cc.lib" value="${cc.code}/lib"/>
<property name="cc.web" value="${WebTest.web}"/>
<property name="cc.build" value="${WebTest.build}"/>
<path id="project.class.path">
<pathelement location="${cc.lib}/classes12.jar"/>
<pathelement location="${cc.lib}/ehcache-0.7.jar"/>
<pathelement location="${cc.lib}/aiismg.jar"/>
<!-----------你应用中使用的所有的jar------------------------------------>
<pathelement location="${cc.lib}/xml-apis.jar"/>
<pathelement location="${cc.lib}/xmlParserAPIs.jar"/>
</path>
<!--编译java源文件
<javac 属性 classpathref 引用上面定义的第三方类
bootclasspathref 编译器启动引用类,如果设置了JAVA_HOME,就不需要使用该参数了
按照jbuilder的风格,编译后先放在classes中,然后copy到web路径下的WEB-INF/classes下
-->
<target name="compile">
<echo message="1 编译源文件!"/>
<javac encoding="GBK" classpathref="project.class.path"
debug="false" deprecation="false" srcdir="${cc.src}" destdir="${WebTest.build}" >
<src path="${cc.src}"/>
<include name="com/utlity/**/*.java"/>
<include name="com/data/**/**/*.java"/>
</javac>
</target>
<target name="copyclasses" depends="compile">
<echo message="2 拷贝编译结果到Web路径"/>
<copy todir="${WebTest.build}">
<fileset dir="${cc.src}" >
<include name="*.xml"/>
<include name="*.properties"/>
<include name="*.ini"/>
</fileset>
</copy>
<copy todir="${cc.web}/WEB-INF/classes">
<fileset dir="${cc.build}" >
</fileset>
</copy>
</target>
<target name="copylib" depends="copyclasses">
<echo message="2 拷贝第三方类库到Web路径"/>
<copy todir="${cc.web}/WEB-INF/lib">
<fileset dir="${cc.lib}" >
<include name="*.jar"/>
</fileset>
</copy>
</target>
</project>
-----目前没有编译jsp,待续--