property特性设置有六种方式

1、直接赋值name,value直接赋值,赋值格式k/v,键值对的方式,看如下操作

事例:

[huang@aliyun_test test]$ vim property.xml 

 

 

 

 

运行结果如下:

[root@aliyun_test apache-ant-1.9.7]# bin/ant A -f /home/huang/test/property.xml 

Buildfile: /home/huang/test/property.xml

A:

     [echo] property       

BUILD SUCCESSFUL

Total time: 0 second


2、由文件路径相关设置特性

[huang@aliyun_test test]$ vim property.xml

 

 

 

 

运行结果如下:

[root@aliyun_test apache-ant-1.9.7]# bin/ant A -f /home/huang/test/property.xml   

Buildfile: /home/huang/test/property.xml

A:

     [echo] example.xml

BUILD SUCCESSFUL

Total time: 0 seconds


3、直接导入的文件内容格式

创建一个文件以键值对的形式存入数据,如下

[huang@aliyun_test test]$ cat file.property 

domain_home=/home/huang/test

xingming=xiaobai

然后创建xml文件

[huang@aliyun_test test]$ cat property.xml 

 

 

 

 

然后ant运行如下结果:

[huang@aliyun_test apache-ant-1.9.7]$ bin/ant -f /home/huang/test/property.xml 

Buildfile: /home/huang/test/property.xml

A:

     [echo] xiaobai        这里显示的就是定义文件的property

BUILD SUCCESSFUL

Total time: 0 seconds


4、从jar中导入特性配置文件,此方法是调用系统环境变量

 

创建xml文件如下

[huang@aliyun_test test]$ vim property.xml 

 

 

      由echo $USER了解到此时用户为huang

 

执行结果如下:

[huang@aliyun_test apache-ant-1.9.7]$ bin/ant -f /home/huang/test/property.xml 

Buildfile: /home/huang/test/property.xml

A:

     [echo] huang         打印出当前系统的登录用户,这是系统环境变量

BUILD SUCCESSFUL

Total time: 0 seconds


5、从网络文件中读取

特性支持直接从网络文件中导入。网络文件的格式要求与从本地文件中导入读取的要求相同

文件内容亦都是以形式存在,对字符集亦有同样要求。设置特性中”url”指定网络文件链接即可。


6、获取主机名,命令方式获取

 errorproperty=”name5.error”/>  

通过exec任务执行本地命令”hostname”来获取设置的主机名,并将该命令正常运行的输出结果,即本设置的主机名,

将会赋值到特性”name5.host.name”中去,如果找不到该本地命令或者命令执行过程中出错,则会将出错内容提法赋值到”name5.error”中去。

创建xml文件如下:

[huang@aliyun_test test]$ vim property.xml 

     此时特性property不再定义

 

 

 

运行结果如下:

[huang@aliyun_test apache-ant-1.9.7]$ bin/ant -f /home/huang/test/property.xml 

Buildfile: /home/huang/test/property.xml

A:

     [echo] aliyun_test

BUILD SUCCESSFUL

Total time: 0 seconds

综合一个xml事例:

[huang@aliyun_test test]$ vim example.xml 

 

 

 

 

 

 

 

 

 

 

运行如下:

[huang@aliyun_test apache-ant-1.9.7]$ bin/ant -f /home/huang/test/example.xml 

Buildfile: /home/huang/test/example.xml


A:

     [echo] xiaobai

     [echo] /home/huang/test

     [echo] huang

     [echo] Disabled


BUILD SUCCESSFUL

Total time: 0 seconds


######关于property特性还有以下内容

特性(property)在声明被赋值之后,其值是不可变的,在整个编译文件中将视为常量而非变量。

 

 

 

 

事例:

[huang@aliyun_test test]$ vim property.xml 

 

 

 

 

 

运行结果如下:

[huang@aliyun_test apache-ant-1.9.7]$ bin/ant -f /home/huang/test/property.xml 

Buildfile: /home/huang/test/property.xml

A:

     [echo] red         这里显示的是第一次声明,不再是后面的声明替代

BUILD SUCCESSFUL

Total time: 0 seconds


###特性的作用域,特性可以作用在全局环境中,也可以作用在局部

在工程级元素(project level,即元素内的XML级)的第一级特性(property)具有作用域是全局的,在构建文件中一直都有效

在目标(target)标签下声明的特性在当前目标target内有效,并且其作用域延续到之后运行的其它目标(target)内。

事例:

[huang@aliyun_test test]$ cat property.xml

      此为全局变量color

 

    这里为局部变量color

 

 

 

 

 

运行结果如下:

[huang@aliyun_test apache-ant-1.9.7]$ bin/ant A B -f /home/huang/test/property.xml 

Buildfile: /home/huang/test/property.xml

A:

     [echo] red

B:

     [echo] red

BUILD SUCCESSFUL

Total time: 0 seconds


target目标里面定义的property也可以作用在其他target中,看事例

[huang@aliyun_test test]$ cat property.xml 

        定义的全局变量color--》red

 

      在target A中定义的property的a.color

 

 

 

             能否作用在target B中?

 

运行结果如下:

[huang@aliyun_test apache-ant-1.9.7]$ bin/ant A B -f /home/huang/test/property.xml 

Buildfile: /home/huang/test/property.xml

A:

     [echo] red

B:

     [echo] bule                 这里显示的也是target A定义的property的值

BUILD SUCCESSFUL

Total time: 0 seconds