Ant构建绿色java程序

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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随风九天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值