ant开始使用ant


备注

本节概述了Ant是什么,以及开发人员可能想要使用它的原因。

它还应该提到Ant中的任何大型主题,并链接到相关主题。由于Ant的文档是新的,您可能需要创建这些相关主题的初始版本。

最低Java版本

各种版本的Ant需要不同版本的Java运行时(JRE)才能运行。

蚂蚁版最低Java版本
1.1高达1.5.4 1.1
1.6.x版本 1.2
1.7.x版本 1.3
1.8.x版本 1.4
1.9.x发布 1.5
1.10.x版本 1.8

版本

发布日期
1.4.1 2001-10-11
1.5.0 2002-07-10
1.5.1 2002年10月3日
1.5.2 2003-03-03
1.5.3 2003-04-09
1.5.4 2003-08-12
1.6.0 2003-12-18
1.6.1 2004-02-12
1.6.2 2004-07-16
1.6.3 2005-04-28
1.6.4 2005-05-19
1.6.5 2005-06-02
1.7.0 2006-12-13
1.7.1 2008-07-09
1.8.0 2010-02-02
1.8.1 2010-04-30
1.8.2 2010-12-20
1.8.3 2012-03-13
1.8.4 2012-05-23
1.9.0 2013年3月10日
1.9.1 2013年5月22日
1.9.2 2013年7月12日
1.9.3 2013年12月29日
1.9.4 二零一四年四月三十零日
1.9.5 采用WordPress
1.9.6 2015年7月2日
1.9.7 2016年4月12日
1.9.8 2016年12月31日
1.9.9 2017年2月6日
1.10.0 2016年12月31日
1.10.1 2017年2月6日

Bootstrap Apache Ivy

build.xml 添加以下目标

<!-- Bootstrap ivy -->
<target name="ivy.bootstrap" description="Download Apache Ivy">

    <!-- Define the version to use -->
    <property name="ivy.version">2.4.0</property>

    <!-- Create directory if not exists -->
    <mkdir dir="${user.home}/.ant/lib" quiet="true" />

    <!-- Download it -->
    <echo message="Downloading Apache Ivy..." />
    <get dest="${user.home}/.ant/lib/ivy.jar" src="https://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.version}/ivy-${ivy.version}.jar" />
</target>
 

在运行任务ant ivy.bootstrap ,您现在可以使用apache ivy解决依赖关系了。

<target name="ivy.resolve" description="Resolve all artifacts.">

    <!-- Define lib driectory -->
    <property name="dir.lib">lib</property>

    <!-- Create directory if not exists -->
    <mkdir dir="${dir.lib}" />

    <!-- Configure -->
    <property name="ivy.dep.file" value="ivy.xml" />
    <ivy:settings file="ivysettings.xml" />

    <!-- Retrieve to a defined pattern -->
    <echo message="Resolving dependencies..." />
    <ivy:retrieve pattern="${dir.lib}/[artifact](-[classifier]).[ext]" />
</target>
 

ivy.xml 定义资源

<ivy-module version="2.0">
        <info organisation="org.apache" module="java-build-tools"/>
        <dependencies>
                <dependency org="junit" name="junit" rev="4.11" />
                <dependency org="org.apache.commons" name="commons-compress" rev="1.9" />
        </dependencies>
</ivy-module>
 

以及ivysettings.xml 任何自定义存储库

<ivysettings>
    <settings defaultResolver="chain"/>
    <resolvers>
        <chain name="chain">
            <ibiblio name="central" m2compatible="true"/>
            <ibiblio name="github" m2compatible="true" root="http://github.com/"/>
        </chain>
    </resolvers>
</ivysettings>
 

通过运行ant ivy.resolve 下载您的依赖ant ivy.resolve

创建jar包

以下将从src 的源代码和lib 的库创建dist/output.jar ,并将使用src/Main.java 作为主类。

<project name="Project" default="main" basedir=".">

    <property name="src.dir"     value="src"/>
    <property name="build.dir"   value="build"/>
    <property name="dist.dir"    value="dist"/>

    <path id="classpath">
        <fileset dir="lib" includes="**/*.jar"/>
        <pathelement path="${build.dir}"/>
    </path>

    <target name="clean">
      <delete dir="${build.dir}"/>
      <delete dir="${dist.dir}"/>
    </target>
    

    <target name="compile">
        <mkdir dir="${build.dir}"/>
        <javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="classpath"/>
        <copy todir="${build.dir}">
            <fileset dir="${src.dir}" excludes="**/*.java"/>
        </copy>
    </target>

    <target name="jar" depends="compile">
        <mkdir dir="${dist.dir}"/>
        <jar destfile="${dist.dir}/${ant.project.name}.jar" basedir="${build.dir}">
            <fileset dir="${build.dir}"/>
            <restrict>
                <archives>
                    <zips>
                        <fileset dir="lib" includes="**/*.jar"/>
                    </zips>
                </archives>
            </restrict>
            <manifest>
                <attribute name="Main-Class" value="Main"/>
            </manifest>
        </jar>
    </target>

    <target name="main" depends="clean,jar"/>
</project>
 

你好,世界

将以下内容添加到项目目录中名为build.xml 的文件中:

<?xml version="1.0" encoding="UTF-8"?>
<project name="HelloWorld" default="main">
    <target name="main" description="this is target main">
        <echo message="Hello World" />
    </target>
</project>
 

在运行Windows的计算机上的命令提示符下,执行ant main 将显示类似于以下内容:

$ ant main
Buildfile: C:\Users\<me>\Projects\HelloWorld\build.xml

main:
     [echo] Hello World

BUILD SUCCESSFUL
 

此外,用户现在可以运行命令ant 作为添加到项目的default 目标名称。运行ant 命令时,它会查找项目的default 目标并执行它。

$ ant 
Buildfile: C:\Users\<me>\Projects\HelloWorld\build.xml

main:
     [echo] Hello World

BUILD SUCCESSFUL
 

如果构建脚本是由其他人编写的,并且最终用户想要查看他可以运行的目标,请运行命令,该命令将显示具有描述的所有目标。

$ ant -p
 

安装或设置

安装Ant非常简单。按照以下步骤在Windows平台上安装Ant:

  1. Apache网站下载最新的ant版本

  2. 解压缩机器上的文件。

  3. 在环境变量中设置ANT_HOME

  4. 将%ANT_HOME%\ bin添加到PATH环境变量中。

  5. 设置CLASSPATH =%ANT_HOME%\ lib;%CLASSPATH%

  6. 现在打开命令提示符并输入ant 命令。你应该看到:

    Buildfile: build.xml does not exist!
    Build failed

或者,在Linux上使用Homebrew或Linux上的Linuxbrew,您只需运行: brew install ant

使用brew时,无需设置环境变量。

一些Linux发行版也支持从各自的包管理器安装Ant。

要正确安装测试,请导航到命令提示符并执行

ant -version
 

此命令将打印Ant版本,并显示已成功安装Ant。

Apache Ant网站上提供了Ant自己的安装说明页面。

在构建之前打印环境信息

以下内容在构建日志中具有识别构建机器和一些参数的便利性;简单地让你的main 任务依赖于这个任务,在每次构建之前打印它。

<!-- Print Environment Info -->
<target name="environment">

        <!-- Get the current timestamp -->
        <tstamp>
                <format property="TODAY_UK" pattern="yyyy-MM-dd HH:mm:ss:sss zzz" locale="cn,CN" />
        </tstamp>

        <!-- Get the hostname of the system -->
        <exec executable="hostname" outputproperty="os.hostname" />

        <!-- Print a bunch of information -->
        <echo message="" />
        <echo message="  Build Information" />
        <echo message="" />
        <echo message="  OS Information" />
        <echo message="" />
        <echo message="    User       : ${user.name}" />
        <echo message="    Hostname   : ${os.hostname}" />
        <echo message="" />
        <echo message="    Name       : ${os.name}" />
        <echo message="    Version    : ${os.version}" />
        <echo message="    Build      : ${os.arch}" />
        <echo message="" />
        <echo message="" />
        <echo message="  Java Information" />
        <echo message="" />
        <echo message="    Version    : ${ant.java.version} / ${java.version}" />
        <echo message="    Java Home  : ${java.home}" />
        <echo message="" />
        <echo message="" />
        <echo message="  Current Time : ${TODAY_UK}" />
        <echo message="" />
</target>
 

这将导致以下输出,

environment:
     [echo]
     [echo]   Build Information
     [echo]
     [echo]   OS Information
     [echo]
     [echo]     User       : <User Name>
     [echo]     Hostname   : <Host Name>
     [echo]
     [echo]     Name       : Windows 8.1
     [echo]     Version    : 6.3
     [echo]     Build      : amd64
     [echo]
     [echo]
     [echo]   Java Information
     [echo]
     [echo]     Version    : 1.8 / 1.8.0_45
     [echo]     Java Home  : C:\Program Files\Java\jdk1.8.0_45\jre
     [echo]
     [echo]
     [echo]   Current Time : 2016-04-18 00:40:11:011 EDT
 

运行JUnit

以下将在匹配test/**/*Test.java 的测试上运行JUnit。这需要junit.jar在lib 文件夹中。

<project name="Project" default="junit" basedir=".">
    <path id="classpath">
        <fileset dir="lib" includes="**/*.jar"/>
        <pathelement path="build"/>
    </path>

    <target name="compile">
        <javac srcdir="test" destdir="build" classpathref="classpath"/>
    </target>

    <target name="junit" depends="compile">
        <junit fork="true" logfailedtests="false">
            <classpath refid="classpath"/>
            <batchtest>
                <fileset dir="test" includes="**/*Test.java"/>
                <formatter type="plain" usefile="false"/>
            </batchtest>
        </junit>
    </target>
</project>