<?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>