<project name="testdemo" default="deploy" basedir=".">
<!--project 目錄結構設置-->
<property environment="env" />
<property name="java.home" value="${env.JAVA_HOME}" />
<property name="src.dir" value="src" />
<property name="doc.dir" value="doc" />
<property name="src.main" value="${src.dir}/main" />
<property name="lib.dir" value="lib" />
<property name="app.name" value="testdemo" />
<!--build目錄設置-->
<property name="build.dir" value="build" />
<property name="build.classes" value="${build.dir}/classes" />
<property name="build.lib" value="${build.dir}/lib" />
<!--deploy目錄設置-->
<property name="deploy.dir" value="deploy" />
<property name="deploy.lib" value="${deploy.dir}/lib" />
<!--構造打包時Class-Path需要的路徑, pathsep是分隔符 -->
<pathconvert property="libs" pathsep=" ">
<mapper>
<chainedmapper>
<flattenmapper />
<globmapper from="*" to="lib/*" />
</chainedmapper>
</mapper>
<!--按照mapper定義的格式組合lib目錄下面的所有jar文件,形成諸如lib/jar1.jar lib/jar2.jar的字符串-->
<fileset dir="${lib.dir}">
<include name="*.jar" />
</fileset>
</pathconvert>
<!--依賴的classpath-->
<path id="classpath">
<fileset dir="${lib.dir}">
<include name="*.jar" />
</fileset>
<fileset dir="${java.home}/lib">
<include name="tools.jar" />
</fileset>
</path>
<!--創建任務init,負責初始化一些條件-->
<target name="init">
<!--刪除編譯、發佈目錄-->
<delete dir="${build.dir}" failοnerrοr="false" />
<delete dir="${deploy.dir}" failοnerrοr="false" />
<!--準備編譯目錄-->
<mkdir dir="${build.dir}" />
<mkdir dir="${build.classes}" />
<mkdir dir="${build.lib}" />
<!--準備發佈目錄-->
<mkdir dir="${deploy.dir}" />
<mkdir dir="${deploy.lib}" />
</target>
<!--拷貝配置文件和依賴的jar-->
<target name="conf_lib" depends="init" description="copy conf and lib">
<copy todir="${build.classes}">
<fileset dir="${src.main}/resources">
<include name="**" />
</fileset>
</copy>
<!-- copy lib 文件 -->
<copy todir="${build.lib}">
<fileset dir="${lib.dir}/" />
</copy>
</target>
<!--創建編譯任務,名字是compile,depends指定了comiple任務依賴init任務-->
<target name="compile" depends="conf_lib" description="comile target">
<!--編譯-->
<javac srcdir="${src.main}/java/" destdir="${build.classes}" includeantruntime="true">
<classpath refid="classpath" />
</javac>
</target>
<!--打成jar包-->
<target name="jar" depends="compile" description="jar taget">
<jar destfile="${build.dir}/${app.name}.jar" >
<manifest>
<attribute name="Main-Class" value="com.test.Main"/>
<attribute name="Class-Path" value="${libs}"/>
</manifest>
<!-- jar標籤中不指定basedir屬性,用fileset指定打包目錄,並排除某些文件不打包到jar包 -->
<fileset dir="${build.classes}">
<exclude name="conf/dbsetting.properties"/>
</fileset>
</jar>
</target>
<!--生成發佈部署文件-->
<target name="deploy" depends="jar" description="deploy">
<copy todir="${deploy.dir}/conf">
<fileset file="${build.classes}/conf/dbsetting.properties" />
</copy>
<copy todir="${deploy.lib}">
<fileset dir="${build.lib}/" />
</copy>
<copy todir="${deploy.dir}">
<fileset file="${build.dir}/${app.name}.jar" />
</copy>
</target>
</project>