<?xml version="1.0" encoding="UTF-8"?>
<project name="ldapTool" default="all" basedir=".">
<property name="src.dir" value="src" />
<property name="src.test.dir" value="test" />
<property name="classes.dir" value="WebRoot/WEB-INF/classes" />
<property name="lib.dir" value="WebRoot/WEB-INF/lib" />
<!-- 用于输出打包的文件夹 -->
<property name="temp.dir" value="${java.io.tmpdir}/${ant.project.name}" />
<property name="target.dir" value="target" />
<property name="jar.CreateXmlFromLdap" value="CreateXmlFromLdap.jar" />
<property name="jar.RegisterToLdap" value="RegisterToLdap.jar" />
<!--构造打包时Class-Path需要的路径 -->
<!--pathconvert用于对目录进行组合 property即这个组合的名字,pathsep作用是各个文件之间的分隔符,
如果不写,在windows平台默认是分号。但时在MANIFEST.MF这个文件中,各个jar包之间要用空格区分,
因此。这里就写成空格了
-->
<pathconvert property="lib" pathsep=" ">
<!--mapper,对路径组合方式进行控制-->
<mapper>
<!--chainedmapper 作用是联合多个mapper-->
<chainedmapper>
<!--过滤文件,将路径去掉,只保留文件名-->
<flattenmapper />
<!--过滤+转换器,将所有的文件名前面都加上一个lib,我们知道lib目录下面有jar包,
lib/*的作用其实是将jar包名与路径进行组合形成如:lib/google.jar这样的相对路径
-->
<globmapper from="*" to="lib/*" />
</chainedmapper>
</mapper>
<!--按照mapper定义的格式组合lib目录下面的所有jar文件,形成诸如lib/jar1.jar lib/jar2.jar的字符串-->
<fileset dir="${lib.dir}">
<include name="*.jar" />
</fileset>
</pathconvert>
<!--组合各个路径,构成MANIFEST.MF文件中Class-Path所需的字符串" . " 表示当前目录-->
<property name="libs" value=" . ${lib}" />
<echo>libs ${lib}</echo>
<!-- 定义classpath -->
<path id="master-classpath">
<fileset file="${lib.dir}/*.jar" />
<pathelement path="${classes.dir}" />
</path>
<!-- 创建时间戳 -->
<tstamp />
<!-- clean -->
<target name="clean">
<delete dir="${classes.dir}" />
<delete dir="${temp.dir}" />
<delete file="${target.dir}/${ant.project.name}.jar" />
<delete file="${target.dir}/${ant.project.name}.war" />
<delete dir="${target.dir}" />
</target>
<!-- 初始化任务 -->
<target name="init" depends="clean">
<mkdir dir="${target.dir}" />
<mkdir dir="${temp.dir}" />
<mkdir dir="${classes.dir}" />
</target>
<!-- 编译 -->
<target name="compile" depends="init" description="compile the source files">
<javac srcdir="${src.dir}" destdir="${classes.dir}" debug="true" encoding="UTF-8">
<classpath refid="master-classpath" />
</javac>
<javac srcdir="${src.test.dir}" destdir="${classes.dir}" debug="true" encoding="UTF-8">
<classpath refid="master-classpath" />
</javac>
<!--
<copy todir="${classes.dir}" overwrite="true">
<fileset dir="${src.dir}">
<include name="**/*.xml" />
<include name="**/*.properties" />
<include name="**/*.bat" />
</fileset>
</copy>
-->
</target>
<!--打jar包-->
<target name="jar" depends="compile">
<jar jarfile="${target.dir}/${jar.CreateXmlFromLdap}">
<fileset dir="${classes.dir}">
<include name="**/*" />
</fileset>
<!--为jar包指定manifest,当然,如果jar包不需要打成runnable的形式,manifest可以不要-->
<manifest>
<!--指定Class-Path-->
<attribute name="Class-Path" value="${libs}" />
<!--指定main-class-->
<attribute name="Main-Class" value="com.hikvision.cms.ldap.test.CreateXmlFromLdap" />
</manifest>
</jar>
<jar jarfile="${target.dir}/${jar.RegisterToLdap}">
<fileset dir="${classes.dir}">
<include name="**/*" />
</fileset>
<!--为jar包指定manifest,当然,如果jar包不需要打成runnable的形式,manifest可以不要-->
<manifest>
<!--指定Class-Path-->
<attribute name="Class-Path" value="${libs}" />
<!--指定main-class-->
<attribute name="Main-Class" value="com.hikvision.cms.ldap.test.RegisterToLdap" />
</manifest>
</jar>
</target>
<!--打 zip 包之前-->
<target name="preZIP" depends="jar">
<copy todir="${temp.dir}" overwrite="true">
<fileset dir="${target.dir}">
<include name="*.jar" />
</fileset>
<fileset dir="${src.dir}">
<include name="**/*.xml" />
<include name="**/*.properties" />
<include name="**/*.bat" />
</fileset>
</copy>
<copy todir="${temp.dir}/lib" overwrite="true">
<!--<fileset dir="${basedir}">
<include name="${lib.dir}/*.jar" />
<include name="index.html" />
<include name="page/**/*.*" />
<include name="WEB-INF/*.xml" />
</fileset>-->
<fileset dir="${lib.dir}">
<include name="*.jar" />
</fileset>
</copy>
</target>
<!--运行一下jar包,试试看效果-->
<target name="run" depends="preZIP">
<!--其实这里就是运行jar命令,注意fork一定加上,不然不起作用-->
<java jar="${temp.dir}/${jar.CreateXmlFromLdap}" fork="true">
</java>
</target>
<!--打zip包-->
<target name="zip" depends="preZIP">
<jar jarfile="${target.dir}/${ant.project.name}.zip">
<fileset dir="${temp.dir}">
<include name="**/*.*" />
</fileset>
</jar>
</target>
<target name="all" depends="zip">
<delete dir="${temp.dir}" />
</target>
</project>