zoukankan      html  css  js  c++  java
  • 使用Ant自动化我们的java项目生成

    现在我们已经了解如何定义属性、依赖关系以及如何运行ant,接下来我们将学习怎样使用ant编译java源代码并生成jar文件。

    编译源代码

    由于Ant的主要目标就是生成java应用程序,它内置了javac任务来调用java的编译器。此任务一般定义如下

    <javac srcdir=”src”  destdir=“build”/>

    Ant会寻找src目录下所有以.java为扩展名的所有文件,并对他们调用javac编译器,从而在build目录下生成class文件。Javac任务不仅会编译需要编译的源文件,如果某个类文件已经存在,但是对应的源代码文件自从该类文件生成后没有改过,则不会重新编译此源代码文件。

    创建jar文件

    在编译java源文件之后,通常会将其归档打包为一个jar文件。Jar任务通常如下定义

    <jar destfile=”wufengtinghai.alm.jar”  basedir=”build”/>

    此任务将创建一个wufengtinghai.alm.jar文件,并将build下的所有文件打包到此jar文件中。如果没有指定清单文件,Ant则会生成一个基本的清单文件。Manifest属性允许制定一个清单文件,同时也可以使用manifest任务定义清单文件。

    <jar destfile="wufengtinghai.alm.jar" basedir="classes">
    <manifest>
    <attribute name="Built-By" value="${user.name}"/>
    <attribute name="project" value="wufengtinghai.alm"/>
    </manifest>
    </jar>
    View Code

    生成时间戳

    在生成环境中使用当前时间和日期,可以以此种方式标记某个生成何时生成输出的。Ant提供了简单易用的tstamp任务可以完成这个功能。这个任务通常在生成过程开始时调用。Tstamp不产生任何的输出;相反,它会根据当前系统时间和日期设置Ant的相关属性。

    DSTAMP:设置为当前日期,默认格式为yyymmdd,例如20150606

    TSTAMP:设置为当前时间,默认格式为hhmm,例如1020

    TODAY:设置为当前日期,带完整的月份,例如2015年6月6日

    那我们可以将我们的jar文件定义为如下

    <jar destfile="lucene-${DSTAMP}.jar" basedir="classes"/>

    最终我们的生成文件autobuildjava.xml如下

    <?xml version="1.0"?>
    <project default="dist" name="autobuildjava"  basedir="../">
        <description>A simple auto build  Java project</description>
        <property name="srcDir" location="src" />
        <property name="buildDir" location="build" />
        <property name="distDir" location="dist" />
        <target name="init">
            <tstamp />
            <mkdir dir="${buildDir}" />
            <mkdir dir="${distDir}" />
        </target>
        <target name="compile" depends="init">
            <javac srcdir="${srcDir}" destdir="${buildDir}" />
        </target>
        <target name="dist" depends="compile">
            <jar destfile="${distDir}/wufengtinghai.alm-${DSTAMP}.jar" basedir="${buildDir}">
                <manifest>
                    <attribute name="Built-By" value="${user.name}" />
                    <attribute name="project" value="wufengtinghai.alm" />
                </manifest>
            </jar>
        </target>
        <target name="clean">
            <delete dir="${buildDir}" />
            <delete dir="${distDir}" />
        </target>
    </project>
    View Code

    执行生成控制台输出如下

    生成的jar文件和清单文件如下

  • 相关阅读:
    Delphi中的接口和抽象类
    设计模式之六大原则
    C 标准库
    linux 管道和重定向
    linux c创建静态库(.a)
    一个C语言程序
    C#动态创建lambda表达式
    linq中order by 和group by (含lambda表达式实现)以及综合案例
    微信扫码登陆原理
    二维码扫码支付原理
  • 原文地址:https://www.cnblogs.com/wufengtinghai/p/4556293.html
Copyright © 2011-2022 走看看