以前对于ant的使用总是避而不触,总以为有点难度,最近一直看我们项目中的build.xml忽而觉得非常简单,也模仿着在我的www.javaedu.com开发上使用了一下,非常不错,以下是我的打包文件build.xml:
<?xml version="1.0"?> <project name="payManager" default="all" basedir="."> <property name="src.dir" value="JavaSource" /> <property name="classes.dir" value="WebContent/WEB-INF/classes" /> <property name="lib.dir" value="WebContent/WEB-INF/lib" /> <property name="WebContent.dir" value="WebContent" /> <!--用于输出的临时文件夹与打包的文件夹--> <property name="temp.dir" value="D:\temp" /> <property name="war.dir" value="D:\war" />
<!--对于不同环境的war包,使用不同的配置文件--> <property name="生产.dir" value="bak\生产" /> <property name="开发.dir" value="bak\开发" /> <!-- 定义classpath --> <path id="master-classpath"> <fileset file="${lib.dir}/*.jar" /> <pathelement path="${classes.dir}" /> </path>
<target name="clean"> <delete dir="${temp.dir}" /> <delete dir="${classes.dir}" /> <delete file="${war.dir}/开发/ROOT.war"/> <delete file="${war.dir}/生产/ROOT.war"/> </target>
<!-- 初始化任务 --> <target name="init" depends="clean"> </target>
<!-- 编译 --> <target name="compile" depends="init" description="compile the source files"> <mkdir dir="${temp.dir}/生产" /> <mkdir dir="${temp.dir}/开发" /> <mkdir dir="${classes.dir}" />
<javac srcdir="${src.dir}" destdir="${classes.dir}" debug="true" encoding="GB2312"> <classpath refid="master-classpath" /> </javac>
<copy todir="${temp.dir}/生产" overwrite="true"> <fileset dir="${WebContent.dir}"> <include name="**/**" /> </fileset> </copy> <copy todir="${temp.dir}/生产/WEB-INF/classes" overwrite="true"> <fileset dir="${生产.dir}"> <include name="jlo_logging.xml" /> <include name="log4j.properties" /> <include name="mvncore.xml" /> <include name="mvnForum_i18n_zh_CN.properties" /> <include name="mvnforum.xml" /> <include name="whirlycache.xml" /> </fileset> </copy> <copy todir="${temp.dir}/开发" overwrite="true"> <fileset dir="${WebContent.dir}"> <include name="**/**" /> </fileset> </copy> <copy todir="${temp.dir}/开发/WEB-INF/classes" overwrite="true"> <fileset dir="${开发.dir}"> <include name="jlo_logging.xml" /> <include name="log4j.properties" /> <include name="mvncore.xml" /> <include name="mvnForum_i18n_zh_CN.properties" /> <include name="mvnforum.xml" /> <include name="whirlycache.xml" /> </fileset> </copy> </target>
<!--打包--> <target name="war" depends="compile"> <mkdir dir="${war.dir}/生产" /> <mkdir dir="${war.dir}/开发" /> <jar jarfile="${war.dir}/生产/ROOT.war"> <fileset dir="${temp.dir}/生产"> <include name="**/*" /> </fileset> </jar> <jar jarfile="${war.dir}/开发/ROOT.war"> <fileset dir="${temp.dir}/开发"> <include name="**/*" /> </fileset> </jar> <delete dir="${temp.dir}"/> </target> <target name="all" depends="war"> <delete dir="${classes.dir}" /> <delete dir="${temp.dir}" /> </target>
</project>
值得注意的是,在书写build.xml的时候一定要小心,别写错了,我就是因为粗心,在写下面代码的时候:
<fileset dir="${生产.dir}"> .<include name="jlo_logging.xml" /> <include name="log4j.properties" /> <include name="mvncore.xml" /> <include name="mvnForum_i18n_zh_CN.properties" /> <include name="mvnforum.xml" /> <include name="whirlycache.xml" /> </fileset>
不小心在红色代码前加了一个“.”,结果报了一个type doesn't support nested text data. 的错,我找了半天没找出原因,到网上搜了一下竟然没有找到答案,后来才发现自己写错了,大汗,改正后,搞定,爽啊。是为记。
|