<?xml version="1.0"?>
<project default="publish" basedir=".">
<property name="jar.name" value="posclient.jar" />
<!-- base directory for distribution target -->
<property name="dist.home" value="dist" />
<!-- base directory for compilation targets -->
<property name="build.home" value="target" />
<!-- The base directory for all libraries (jar) files -->
<property name="lib.home" value="lib" />
<property name="publishdir" value="d:/posclient" />
<property name="mainclass" value="datasync.win.MainWin" />
<path id="project.class.path">
<fileset dir="${lib.home}">
<include name="*.jar"/>
</fileset>
</path>
<target name="clean" >
<delete dir="${build.home}"/>
<delete dir="${dist.home}"/>
<delete dir="${publishdir}/*"/>
</target>
<target name="compile" depends="clean">
<mkdir dir="${build.home}"/>
<mkdir dir="${dist.home}"/>
<mkdir dir="${publishdir}"/>
<javac srcdir="src" destdir="${build.home}">
<classpath refid="project.class.path" />
</javac>
<copy todir="${build.home}" >
<fileset dir="src" >
<exclude name="**/*.java"/>
</fileset>
</copy>
</target>
<target name="jar" depends="compile" description="Create jar and MANIFEST.MF">
<!-- create a property containing all .jar files, prefix lib/, and seperated with a space -->
<pathconvert property="libs.project" pathsep=" ">
<mapper>
<chainedmapper>
<!-- remove absolute path -->
<flattenmapper />
<!-- add lib/ prefix -->
<globmapper from="*" to="*" />
</chainedmapper>
</mapper>
<path>
<!-- lib.home contains all jar files, in several subdirectories -->
<fileset dir="${lib.home}">
<include name="*.jar" />
</fileset>
</path>
</pathconvert>
<!-- create the jar -->
<jar jarfile="${dist.home}/${jar.name}" basedir="${build.home}">
<!-- define MANIFEST.MF -->
<manifest>
<attribute name="Built-By" value="${user.name}" />
<attribute name="Main-Class" value="${mainclass}" />
<section name="common">
<attribute name="Specification-Title" value="${component.name}" />
<attribute name="Specification-Version" value="${component.version}" />
<attribute name="Specification-Vendor" value="${component.vendor}" />
<attribute name="Implementation-Title" value="${component.name}" />
<attribute name="Implementation-Version" value="${component.version} ${TODAY}" />
<attribute name="Implementation-Vendor" value="${component.vendor}" />
</section>
<!-- finally, use the magically generated libs path -->
<attribute name="Class-Path" value="${libs.project}" />
</manifest>
<exclude name="conf/client.properties"/>
<exclude name="log4j.properties"/>
</jar>
</target>
<target name="publish" depends="jar" >
<copy todir="${publishdir}/lib" >
<fileset dir="${lib.home}" >
<include name="*.jar"/>
</fileset>
</copy>
<copy todir="${publishdir}/dist" file="${dist.home}/${jar.name}"/>
<copy todir="${publishdir}/dist/conf" file="${build.home}/conf/client.properties"/>
<copy todir="${publishdir}/dist/conf" file="${build.home}/log4j.properties"/>
<copy todir="${publishdir}/lib" file="${dist.home}/${jar.name}"/>
<copy todir="${publishdir}/lib/conf" file="${build.home}/conf/client.properties"/>
<copy todir="${publishdir}/lib/conf" file="${build.home}/log4j.properties"/>
</target>
</project>
一个完整的打包jar的ant文件
最新推荐文章于 2024-05-22 10:12:22 发布