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文件和清单文件如下

  • 相关阅读:
    配置类【RibbonAutoConfiguration】的实例属性【configurations】是如何注入的?---实例化
    配置类【RibbonAutoConfiguration】的实例属性【configurations】是如何注入的?---配置类来源
    为什么启动类被【@SpringBootApplication】注解后,就会自动扫描其包内所有被【@Component】注解的类?
    自定义Ribbon配置时出现自定义的扫描排除注解【excludeFilters】不生效
    Spring
    eureka关闭crsf过滤
    docker-compose
    eureka
    centos7根目录扩容的一些理解
    Error injecting: org.apache.maven.artifact.installer.DefaultArtifactInstaller com.google.inject.ProvisionException: Unable to provision
  • 原文地址:https://www.cnblogs.com/wufengtinghai/p/4556293.html
Copyright © 2011-2022 走看看