Ant工具中的常用的核心任务.docx

上传人:b****6 文档编号:4689231 上传时间:2022-12-07 格式:DOCX 页数:17 大小:30.66KB
下载 相关 举报
Ant工具中的常用的核心任务.docx_第1页
第1页 / 共17页
Ant工具中的常用的核心任务.docx_第2页
第2页 / 共17页
Ant工具中的常用的核心任务.docx_第3页
第3页 / 共17页
Ant工具中的常用的核心任务.docx_第4页
第4页 / 共17页
Ant工具中的常用的核心任务.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

Ant工具中的常用的核心任务.docx

《Ant工具中的常用的核心任务.docx》由会员分享,可在线阅读,更多相关《Ant工具中的常用的核心任务.docx(17页珍藏版)》请在冰豆网上搜索。

Ant工具中的常用的核心任务.docx

Ant工具中的常用的核心任务

文章分类:

Java编程

 在Ant工具中每一个任务封装了具体要执行的功能,是Ant工具的基本执行单位。

Ant工具内提供很多有用的任务,项目开发时可利用Ant工具提供的内置任务方便地实现自动构建等功能。

本章主要讲解Ant工具的核心任务及其作用,便于读者根据功能选择使用。

4.1 AntTask:

Ant任务(执行多个构件文件)

   如果需要在一个构件文件中通过Ant命令去执行另一个Ant项目,或者说要执行本项目的子项目的构件文件。

这时Ant这个核心任务就派上用场了。

简单地说Ant任务的作用就相当于在命令行通过Ant命令执行构件文件。

值得注意的是Ant任务依赖于target元素,需要在某个target元素中使用,不能在target元素外独立使用。

   Ant任务还可以实现类似Java程序间的继承关系,不过对于这个核心任务来说只继承property元素和reference属性。

举个例子说,项目A中包含通过Ant任务去执行的项目B,而项目B中需要用到项目A中的属性C,那么可以通过设置的Ant任务中的inheritAll属性,使得在B项目中可以使用项目A中的属性C。

从另一方面看,这也符合XP(极限)编程中的细分功能的思想,可以把大的项目切分为几分小项目,然后通过Ant工具进行整合。

4.1.1 AntTask的属性及功能

 Ant任务包括antfile、dir、target、output、inheritAll、inheritRefs这些属性,具体说明如下:

(1)antfile属性:

在Ant任务中antfile属性的作用是指定要执行的构件文件的名称,可包含路径信息。

例如,在projectA中执行projectB的构件文件。

projectA的构件文件内容如下:

xmlversion="1.0"?

>

--在projectA中执行projectB的构件文件  -->

   

       

       

projectB存放于subfile目录下,具体内容如下:

hamg

xmlversion="1.0"?

>

   

       

   

如果要通过projectA运行projectB的构件文件,那么可以在命令行执行:

ant–buildfileprojectA.xml,执行结果如图4.1所示。

图4.1 通过projectA运行projectB

从执行结果得知,antfile属性的作用相当于在Ant命令中指定-buildfilesubfile/projectB.xml选项,只不过Ant任务提供了更方便的功能。

如果antfile属性没设定,那么Ant任务会查找名称为build.xml的构件文件。

当然antfile属性也可与dir属性结合使用,antfile指定文件名称,dir属性指定文件所在的目录。

(2)dir属性:

在Ant任务中dir属性的作用是用于指定构件文件所在的目录。

相当于指定了要执行的构件文件的basedir属性。

在默认情况下如果dir属性没设定,那么会以当前执行的构件文件的根目录作为Ant任务的根目录。

这个属性设定后,被执行的构件文件的basedir属性将取dir属性的值。

下面把targetA.xml构件文件改写为通过dir属性指定目录以实现同样的功能,具体的构件文件内容如下:

xmlversion="1.0"?

>

   

--//调用projectB.xml构件文件 -->

   

       

       

   

(3)target属性:

在Ant任务中target属性的作用是指定被执行的构件文件中所要执行的target,如果target属性没有设定,那么将会执行被调用的构件文件中的默认target(也就是project元素中指定default值)。

这个属性相当于在命令行执行时指定要执行的target的选项。

例如,在projectA1中调用projectB1,并执行projectB1中的target“target2”。

编写projectA1.xml构件文件,内容如下:

xmlversion="1.0"?

>

   

       

        

--//通过ant任务执行projectB.xml构件文件,指定执行target2这个target -->

       

   

被调用的projectB.xml构件文件的内容如下:

xmlversion="1.0"?

>

   

       

   

   

       

   

然后在命令行执行ant–fprojectA1.xml以查看Ant任务的执行效果,执行结果如图4.2所示。

图4.2 项目调用结果

在执行结果中可看出,在targetA.xml中通过Ant任务执行了targetB.xml中的target2这个target。

(4)output属性:

在Ant任务中output属性主要用于指定Ant工具执行时的信息输出,可定位到控制台或定位到文件中。

当输出信息到文件中时,相当于在命令行指定-logfile,-l选项。

如果指定了dir属性,那么被指定的输出文件的位置是相对于dir属性指定的目录的,当然也可以通过绝对路径指定。

例如,把projectA中的输出信息定位到out.log文件,构件文件的内容如下:

xmlversion="1.0"?

>

   

       

        

--//输出信息到out.log中 -->

       

   

(5)inheritAll属性:

在Ant任务中inheritAll属性用于指定被调用的构件文件的project元素中可使用当前project元素中的属性。

这个属性类似于Java程序中类的继承关系。

默认时inheritAll属性取值为true。

(6)inheritRefs属性:

在Ant任务中,如果设定了inheritRefs属性为true,那么被调用的构件文件中的project元素可引用当前project元素中的reference(参考)任务。

Reference任务的作用是把当前的属性复制到被调用的Antproject中使用。

References任务包含两个属性,如下:

 ●refid属性:

这个属性代表当前project中的属性id。

 ●torefid属性:

用于指定在被调用的project中的引用id。

Reference的使用例子如下:

--//把当前project中的path1属性传递给被调用的project中使用,

在被调用project中通过path2引用这个属性。

 -->

4.1.2 使用AntTask整合子项目的实例

在实际的项目中,大的项目都会拆分成独立的几个子项目,开发完后再整合在一起。

这样做有利于项目的独立测试和长期维护。

如果用Ant工具来构建项目,那么Ant任务就派上用场了。

这里以实例来学习Ant任务的作用。

1.指定子项目

--//指定子项目构件文件及根目录,同时指定要执行的target -->

2.指定属性并在子项目中调用

 

 

--//由于在默认时inheritAll="true",因此当前项目中定义的param1属性和属性文件default.properties都可以在子项目中引用。

 -->

3.继承关系

假设在当前构件文件中定义了以下元素:

    

   ...

   ...

在被调用的subbuild.xml中定义了类型的path1但没定义类型的path2。

那么刚执行构件文件时,被调用的Antproject中的path1不会被覆盖,但path2可以被调用。

如果指定inheritrefs="false",那么在被调用的project中既不会覆盖path1也不能引用path2。

当需要覆盖path1时可把Ant任务改为:

 

当需要引用当前project中的path1同时也要使用本身的path1,那可以通过reference做到,改写Ant任务为:

 

这个任务的作用是,在被调用的project中建立对当前project中的path1的引用,并命名为path2。

在被调用的project中可通过path2来引用。

4.2 AntCallTask:

执行过程中调用并执行其他target

AntCall任务的作用是允许在一个target的执行过程中调用并执行其他的target。

例如,在打包项目前需要对项目进行编译,那么可以在打包项目的target中通过AntCall任务使得编译的target先执行。

当然这种情况也可以通过target间设置depends属性来实现。

AntCall任务必须在target元素内执行,这个任务不能在target元素外执行。

4.2.1 AntCallTask属性及功能

AntCall任务主要包括target,inheritAll和inheritRefs3个属性,具体说明如下:

(1)target属性:

在AntCall任务中target属性的作用是指定要被调用执行的target,通过名称指定这个target属性是必需的。

值得注意的是,当通过AntCall任务调用的target存在依赖的target(depends中指定了target),则depends属性中被指定的target也会被执行。

(2)inheritAll属性:

用于指定是否继承当前的属性。

默认时为true,代表被调用的target可使用这些属性。

(3)inheritRefs属性:

用于指定是否覆盖reference属性或者是否建立一个对当前reference属性的引用。

在默认的情况下,AntCall任务不会覆盖reference属性,除非把inheritRefs属性设为true。

默认时inheritRefs属性为false。

4.2.2 利用AntCallTask实现target间调用的实例

利用AntCall任务来实现target间的相互调用。

下面编写构件文件antcallSample.xml,实现在targetA中调用执行targetB。

构件文件内容如下:

xmlversion="1.0"?

>

   

       

       

--//调用targetB -->

       

       

   

   

       

   

保存构件文件,然后在命令行执行命令ant–fantcallSample.xml,执行结果如图4.3   所示。

图4.3 antcallSample.xml

上面的例子的作用是在执行targetA的过程中执行targetB。

如果targetB中设定了depends属性,则depends属性中指定的target也会被执行。

修改antcallSample.xml如下,以演示depends的依赖关系:

xmlversion="1.0"?

>

   

       

   

   

       

       

       

       

   

   

       

   

保存构件文件,然后再次执行ant–fantcallSample.xml命令,执行结果如图4.4所示。

图4.4 antcallSample.xml命令的执行结果

上面的执行结果表明:

在执行targetA时调用targetB,由于targetB依赖于inittarget。

因此inittarget先于targetB执行。

4.2.3 利用AntCallTask实现target间调用时传递参数的实例

当需要从一个target传递参数到被调用的target时,可以使用类型进行传递。

当然也可以在target中定义property来实现,与Java中的方法调用时传递参数相似。

修改antcallSample.xml以实现传递参数的功能,内容如下:

xmlversion="1.0"?

>

   

       

   

   

       

         

--//通过property传递 -->

        

       

              

--//通过antcall设定param实现 -->

            

       

       

   

   

       

       

       

   

再次执行ant–fantcallSample.xml命令,执行结果如图4.5所示。

图4.5 antcallSample.xml

从执行结果可看出,通过property指定和通过AntCall中的param指定的属性都传递到targetB中。

对于param类型只有两个属性:

name和value。

由于AntCall任务中的inheritAll属性默认时为true,所以property能被targetB引用。

如果targetB中也定义了相同的property,那么可以通过设置inheritRefs属性和reference类型进行覆盖。

4.3 Apply/ExecOnTask:

通过Ant工具直接执行系统命令

Apply/ExecOn任务的作用是,通过Ant工具直接执行系统使命。

通过这个task执行的命令依赖于操作系统,而且只能在Ant支持的操作系统下执行。

Ant支持Windows、Linux、UNIX、OS/2Warp、NovellNetware6和MacOSX。

4.3.1 Apply/ExecOnTask属性及功能

(1)executable属性:

用于指定要执行的命令,不带命令行参数,这个属性是必需的。

(2)dest属性:

用于指定命令执行时目标文件的存放位置。

(3)spawn属性:

用于指定是否在执行命令时产生输出信息。

默认为false代表输出日志信息。

如果指定了spawn属性为true,Ant将不会产生这个命令的日志输出。

(4)dir属性:

用于指定执行命令所在的目录,在此目录下执行这个命令。

(5)relative属性:

用于指定命令是否支持相对路径。

默认为false,不支持相对路径,相对于当前根目录或dest属性设定的目录。

(6)forwardslash属性:

用于设定文件路径是否支持斜线分隔符,尽管有些操作系统支持其他的分隔符。

默认时为false,如果操作系统的分隔符为斜线,那么这个属性将被       忽略。

(7)os属性:

列出允许执行这个命令的操作系统。

(8)output属性:

指定把命令行执行的输出重定向到一个输出文件。

如果错误信息没有重定向到特定文件,错误信息则将输出到这个文件中。

(9)error属性:

指定一个文件用于接收错误的输出信息。

从Ant1.6后提供了这个    属性。

(10)logError属性:

这个属性用于指定把错误的日志输出到Ant工具的日志信息中,也可以通过error属性指定错误的输出文件。

(11)append属性:

指定是否可以输出到一个存在的文件或者覆盖存在的文件,默认为false。

(12)outputproperty属性:

指定输出定向到的属性的名字,在属性中可定义一个文件,这样就可以把输出信息输出到文件中。

(13)errorproperty属性:

用于指定把错误信息输出到的属性的名字。

(14)input属性:

指定一个文件,从这个文件中读取属性,在执行命令时可以引用得到这些属性。

(15)inputstring属性:

用于把inputstring属性指定的字符串传递给执行的命令。

(16)resultproperty属性:

这个属性用于存放命令执行后所返回的结果。

(17)timeout属性:

设定一个时间,如果这段时间内命令没执行完毕,则这个命令会被中断。

(18)failonerror属性:

这个属性用于指定是否出错时命令终止。

如果属性取值为true,那么在执行的命令退出的同时返回一个不为0的代码,则构建进程将会中止。

(19)failifexecutionfails属性:

用于指定当不能执行程序时是否中止构建命令的执行,默认为true。

(20)skipemptyfilesets属性:

当指定的目录中没有文件,则构建命令将不会被执行

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1