您的位置:首页 > 运维架构 > Apache

Apache Ant 使用基础

2007-12-17 19:58 302 查看
1.环境
在正式开始编写脚本之前,我们需要下载安装相应的软件。

Eclipse:为了使 Ant 的开发更加简单,我们选择了 Eclipse3.1 作为开发环境。当然你可以使用任何你喜欢的文本编辑工具来开发你的 Ant。Eclipse 的最新版本可以在 http://eclipse.org/ 上下载。

Ant:Ant 是基于 Java 的编译工具,它就像 C/C++ 中的 make,但是没有 make 那样难用。Ant 的最新版本可以在 http://ant.apache.org/bindownload.cgi 上下载。如果你用 Eclipse 来开发 Ant,则不用去单独下载 Ant,因为在 Eclipse 中已经集成了 Ant。

2.1 基本语法
每个生成文件由单个
project
元素组成,该元素又包含一个或多个
target
元素。一个目标(target)是生成过程中已定义的一个步骤,它执行任意数量的操作,比如编译一组源文件。
顶级
project
元素需要包含一个
default
属性,如果在 Ant 被调用时没有指定目标,这个属性将指定要执行的目标。然后需要使用
target
元素来定义该目标本身。下面是一个最基本的生成文件:


<?xml version="1.0"?>


<project default="init" name="Project Name">


<description>


A simple project introducing the use of descriptive tags in Ant build files.


</description>


<!-- XML comments can also be used -->


<target name="init" description="Initialize database">


<!-- perform initialization steps here -->


</target>


</project>

2.2 属性
Ant 中的属性 类似编程语言中的变量,它们都具有名称和值。然而与通常的变量不同,一经设置,Ant 中的属性就不可更改;它们是不可变的,就像 Java 语言中的
String
对象。

<property name="metal" value="beryllium"/
[/code]
为了在生成文件的其他部分引用这个属性,您会使用以下语法:

<property name="metal-database" value="${metal}.db"/>

Ant 中有许多预定义的属性,Java 环境设置用于运行 Ant 的所有系统属性,均可作为 Ant 属性使用,比如
${user.home}


2.3 属性文件(properties)
在上面的例子中,所有的路径信息都是写在 build.xml 中。但是 Ant 脚本可能在不同的机器或者不同的系统上运行,也有可能一些值需要根据环境的不同而变化,在 Ant 中可以把所有这些可能变化的地方都放到一个配置文件中,然后在 Ant 脚本中引用这个配置文件就可以了,如下所示:


<project name="testBuild" default="compile" basedir=".">


<property file="build.properties"/>


<target name="init">


<mkdir dir="${dest.dir}" />


</target>


<target name="compile" depends="init">


<javac srcdir="${src.dir}" destdir="${dest.dir}"/>


<echo>Build into ${dest.dir}, successfully.</echo>


</target>


</project>


build.properties的内容:


dest.dir=c:/temp/dest/testProj


src.dir=c:/temp/src/testProj


2.4 依赖关系

生成一个项目一般需要许多步骤 —— 例如首先要编译源代码,然后将它打包为 Java 归档文件(Java Archive File,JAR)。这其中许多步骤都具有清楚定义的顺序。每个目标的定义依据的是在它在能够执行之前必须完成的其他所有目标。这是使用
target
元素的
depends
属性来实现的。


<target name="init"/>


<target name="preprocess" depends="init"/>


<target name="compile" depends="init,preprocess"/>


<target name="package" depends="compile"/>




2.5 命令行执行

-buildfile <file>
参数(
-f <file>
是其简写形式)。

2.6 综合
下面将把这些代码片断组合成一个完整的生成文件,它将编译
src
目录下的所有源代码,将结果类文件放在
build
目录下,然后把所有类文件打包到
dist
目录中的一个 JAR 文件中。


<?xml version="1.0"?>


<project default="dist" name="Project Argon">


<description>A simple 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}/package-${DSTAMP}.jar" basedir="${buildDir}">


<manifest>


<attribute name="Built-By" value="${user.name}"/>


<attribute name="Main-Class" value="package.Main"/>


</manifest>


</jar>


<jar destfile="${distDir}/package-src-${DSTAMP}.jar" basedir="${srcDir}"/>


</target>




<target name="clean">


<delete dir="${buildDir}"/>


<delete dir="${distDir}"/>


</target>


</project>



Buildfile: build.xml
init:
[mkdir] Created dir: E:/tutorial/javaexample/build
[mkdir] Created dir: E:/tutorial/javaexample/dist
compile:
[javac] Compiling 10 source files to E:/tutorial/javaexample/build
dist:
[jar] Building jar: E:/tutorial/javaexample/dist/package-20031217.jar
[jar] Building jar: E:/tutorial/javaexample/dist/package-src-20031217.jar
BUILD SUCCESSFUL
Total time: 5 second
[/code]
注意 JAR 文件是根据当前日期来命名的,并且为应用程序的主类设置了一个清单条目,以便主类能够通过一个简单的命令
java -jar package-20031217.jar
来直接运行。我们还创建了一个 JAR 文件,它仅包含项目的源代码。

2.7 创建和删除目录
创建: <mkdir dir="archive/metals/zinc"/>
删除: <delete dir="archive/metals/zinc"/>
删除指定的目录连同它包含的所有文件以及子目录。
拷贝:
<copy file="src/Test.java" tofile="src/TestCopy.java"/>


2.8 模式匹配



<copy todir="archive">


<fileset dir="src">


<include name="*.java"/>


</fileset>


</copy>



如果我们想要使用一个模式,可以将
file
属性替换为一个
fileset
元素,如下所示:

fileset
默认情况下包含指定
src
目录下的所有文件,因此为了仅选择 Java 文件,我们对模式使用一个
include
元素。类似地,我们可以对另一个模式添加一个
exclude
元素,从而潜在地排除
include
指定的匹配项。甚至可以指定多个
include
exclude
元素;这样将得到一组文件和目录,它们包含
include
模式的所有匹配项的并集,但排除了
exclude
模式的所有匹配项。

参考IBM ANT使用教程
IBM教程: https://www6.software.ibm.com/developerworks/cn/education/java/j-apant/tutorial/j-apant.zip
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: