项目中ant构建文件的使用总结

阅读更多

最近交接的一个项目,项目算是比较老了,里面使用了ant编译代码,使用的是默认配置build.xml。

自己从没有接触过build.xml,ant的相关内容也没有学些过,这里由于项目用到了,就根据项目中的使用情况,进行了简单的学习。废话少说。

Ant是Apache中的一个子项目,最近Apache的Ant基项目前移到了

Apache Ant's family of projects migrates to git on https://git-wip-us.apache.org/repos/asf

这里就不对ant做全面的介绍了,就根据项目中的使用介绍下如何编写build.xml。

Apache Ant的构建文件是写在xml文件中的,每个构建文件一个项目project和至少一个(默认的)目标target,用元素来定义,每一个target元素就是定义一个目标,即完成某件事情;target元素内包含的是各种任务task元素,每个task都是可执行的任务,即完成某件事情的具体步骤(注意:task元素不是元素,而是一类元素,比如等等)。task元素可以包含一个id属性,其他task可以根据这个id的值引用该task,因此可知,id的值是唯一的。

这里首先要说一下,一个构建文件中要有一个project,一个或者多个目标元素,目标元素里面应该定义任务,同时在构建文件中也可以定义属性,作为全局变量来被使用。

1.project

一个project元素有三个属性,name,default,basedir

name:项目的名字,不是必须的。

default:当没有定义target元素时,该元素作为默认元素使用。提示:从ant1.6.0之后,每一个project包括一个隐含的target,作为ant初始化的一部分,总是不执行,即使你在使用ant help 选项的时候也执行。

basedir:计算所有目录的基目录,这个属性可能被事先定义的"basedir"的property属性覆盖,如果定义了basedir的property,则project的basedir属性必须被省略。如果两者都没有定义,则使用构建文件所在目录的父目录。

包含该构建文件的目录作为一个相对目录使用。

另外,一个project包含一个或者多个target元素,一个target包含一些列需要执行的task。启动ant的时候,可以指定执行那些target,如果没有指定,则默认的target被执行。

 

2.target

如上面所述,target就是要完成的一件目标,一个target可以依赖于其他的target。例如,你有一个编译的target,其name为compile,还有一个创建分发包的target,其name为distribute,那么在你构建分发包之前需要先编译,则这个distribute就要依赖于compile。ant会去解析这些依赖关系。

这里需要注意的是:target的denpends属性仅仅是指定了在当前target执行前以来的target的一个执行顺序,但是不管依赖的target是否执行过,都不影响依赖目标的执行。

 

3 task

一个任务(task)是一系列可执行的代码。

一个task可能有很多属性attribute和参数arguments,属性attribute的值可能会引用之前定义的property,ant在运行前会去解析这些引用。

 task有一个通用的结构,如下:

name:这个task的name值,attribute1:这个task的属性名称,value1:对应属性的属性值。

Ant中有很多内置的task,例如java、javac、jar等等。这里也可以编写自己的task。

 

 

你可能感兴趣的:(ant,build.xml,构建文件)