1 实战
1.1 复制数据
通过ant的 delete 和 copy 删除文件和复制文件。
<delete dir="${build_dir}/src">
</delete>
<copy todir="${build_dir}/src" encoding="utf-8">
<fileset dir="${project_dir}/src"></fileset>
</copy>
1.2 编译java
boot.path.ref 为jdk 的 classPath路径, lib.path.ref为当前程序的classPath(lib目录)。
<property name="java.jre.lib.dir" value="${jdk}/jre/lib" />
<path id="lib.path.ref">
<fileset dir="${dest_dir}/lib" includes="*.jar" />
</path>
<target name="compile" depends="init" description="编译">
<pathconvert property="lib" pathsep=" ">
<map from="${dest_dir}/lib/" to="lib/" />
<path refid="lib.path.ref">
</path>
</pathconvert>
<path id="boot.path.ref">
<fileset dir="${java.jre.lib.dir}" includes="**/*.jar" />
</path>
<javac compiler="javac1.8" bootclasspathref="boot.path.ref" classpathref="lib.path.ref" srcdir="${build_dir}/src" destdir="${build_dir}/bin" source="1.8" target="1.8" executable="${jdk}/bin/javac" encoding="utf-8">
<compilerarg value="-Xlint" />
</javac>
</target>
1.3 打成jar
通过jar 打成jar文件。
<macrodef name="jar_cost">
<sequential>
<jar jarfile="${dest_dir}/lib/perfectcost.jar" encoding="utf-8" compress="false" basedir="${build_dir}/bin">
<manifest>
<attribute name="Built-By" value="${Name}" />
<attribute name="Create-On" value="${TIME}" />
</manifest>
<exclude name="**/com/cscost/Project.class" />
</jar>
</sequential>
</macrodef>
<macrodef name="jar_editor">
<sequential>
<jar jarfile="${dest_dir}/editor.jar" encoding="utf-8" compress="false" basedir="${build_dir}/bin">
<manifest>
<attribute name="Built-By" value="${Name}" />
<attribute name="Main-Class" value="com.cscost.Project" />
<attribute name="Class-Path" value="${lib} lib/perfectcost.jar jre/lib/rt.jar" />
<attribute name="Create-On" value="${TIME}" />
</manifest>
<include name="**/com/cscost/Project.class" />
</jar>
</sequential>
</macrodef>
1.4 编写bat启动文件
内容如下:
jre\bin\java.exe -Xms80m -Xmx1024m -Djava.library.path=browser/win64 -jar editor.jar %1
1.5 压缩
<tstamp>
<format property='DATE' pattern='yyyy-MM-dd' />
<format property='TIME' pattern='yyyy-MM-dd.HHmm' />
</tstamp>
<target name="zip" depends="jar">
<zip destfile="${build_dir}/perfectcost${TIME}.zip" basedir="${dest_dir}" compress="true">
</zip>
</target>
1.6 完整例子
<?xml version='1.0' encoding='utf-8'?>
<project default="build" basedir=".">
<tstamp>
<format property='DATE' pattern='yyyy-MM-dd' />
<format property='TIME' pattern='yyyy-MM-dd.HHmm' />
</tstamp>
<property name="winSys" location="win64">
</property>
<property name="build_dir" location="D:/pack/build">
</property>
<property name="jdk" location="D:/pack/jdk1.8.0_131">
</property>
<property name="dest_dir" location="D:/pack/perfectcost">
</property>
<property name="project_dir" location="D:/newws/perfectcost">
</property>
<property name="java.jre.lib.dir" value="${jdk}/jre/lib" />
<path id="lib.path.ref">
<fileset dir="${dest_dir}/lib" includes="*.jar" />
</path>
<target name="init" description="初始化">
<delete dir="${build_dir}/bin">
</delete>
<mkdir dir="${build_dir}/bin" />
<delete dir="${build_dir}/src">
</delete>
<copy todir="${build_dir}/src" encoding="utf-8">
<fileset dir="${project_dir}/src">
</fileset>
</copy>
<copy todir="${build_dir}/bin">
<fileset dir="${build_dir}/src">
<include name="**/*.jpg" />
<include name="**/*.png" />
<include name="**/*.gif" />
<include name="**/*.xml" />
</fileset>
</copy>
<delete dir="${dest_dir}/lib">
</delete>
<mkdir dir="${dest_dir}/lib" />
<copy todir="${dest_dir}/lib">
<fileset dir="${project_dir}/lib">
</fileset>
<fileset dir="${project_dir}/lib2/win64">
</fileset>
</copy>
<delete dir="${dest_dir}/browser">
</delete>
<copy todir="${dest_dir}/browser/win64">
<fileset dir="${project_dir}/browser/win64">
</fileset>
</copy>
<delete dir="${dest_dir}/data">
</delete>
<copy todir="${dest_dir}/data">
<fileset dir="${project_dir}/data">
</fileset>
</copy>
<delete dir="${dest_dir}/WebContent">
</delete>
<copy todir="${dest_dir}/WebContent">
<fileset dir="${project_dir}/WebContent">
<exclude name="**/backup/**" />
</fileset>
</copy>
</target>
<target name="compile" depends="init" description="编译">
<pathconvert property="lib" pathsep=" ">
<map from="${dest_dir}/lib/" to="lib/" />
<path refid="lib.path.ref">
</path>
</pathconvert>
<path id="boot.path.ref">
<fileset dir="${java.jre.lib.dir}" includes="**/*.jar" />
</path>
<javac compiler="javac1.8" bootclasspathref="boot.path.ref" classpathref="lib.path.ref" srcdir="${build_dir}/src" destdir="${build_dir}/bin" source="1.8" target="1.8" executable="${jdk}/bin/javac" encoding="utf-8">
<compilerarg value="-Xlint" />
</javac>
</target>
<macrodef name="jar_cost">
<sequential>
<jar jarfile="${dest_dir}/lib/perfectcost.jar" encoding="utf-8" compress="false" basedir="${build_dir}/bin">
<manifest>
<attribute name="Built-By" value="${Name}" />
<attribute name="Create-On" value="${TIME}" />
</manifest>
<exclude name="**/com/cscost/Project.class" />
</jar>
</sequential>
</macrodef>
<macrodef name="jar_editor">
<sequential>
<jar jarfile="${dest_dir}/editor.jar" encoding="utf-8" compress="false" basedir="${build_dir}/bin">
<manifest>
<attribute name="Built-By" value="${Name}" />
<attribute name="Main-Class" value="com.cscost.Project" />
<attribute name="Class-Path" value="${lib} lib/perfectcost.jar jre/lib/rt.jar" />
<attribute name="Create-On" value="${TIME}" />
</manifest>
<include name="**/com/cscost/Project.class" />
</jar>
</sequential>
</macrodef>
<target name="jar" depends="compile">
<jar_cost />
<jar_editor />
</target>
<target name="zip" depends="jar">
<zip destfile="${build_dir}/perfectcost${TIME}.zip" basedir="${dest_dir}" compress="true">
</zip>
</target>
<target name="build" depends="zip">
</target>
</project>