以前對于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. 的錯,我找了半天沒找出原因,到網上搜了一下竟然沒有找到答案,后來才發現自己寫錯了,大汗,改正后,搞定,爽啊。是為記。
|