phing教程.docx

上传人:b****8 文档编号:30077898 上传时间:2023-08-04 格式:DOCX 页数:17 大小:21.96KB
下载 相关 举报
phing教程.docx_第1页
第1页 / 共17页
phing教程.docx_第2页
第2页 / 共17页
phing教程.docx_第3页
第3页 / 共17页
phing教程.docx_第4页
第4页 / 共17页
phing教程.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

phing教程.docx

《phing教程.docx》由会员分享,可在线阅读,更多相关《phing教程.docx(17页珍藏版)》请在冰豆网上搜索。

phing教程.docx

phing教程

XMLAndPhing

一个合法的Phing构建文件有以下几部分构成:

1.文档序言

2.唯一的根元素

3.一些Phing的type元素(比如,,等)

4.一个或多个元素,每个target包含内建或用户自定义的Phingtask元素(例如,

等)。

WritingASimpleBuildfile

Foobar项目将一些php文件从源目录安装到目标目录,并将这些文件作了打包处理。

[html]viewplaincopy

1.

xml version="1.0" encoding="UTF-8"?

>  

2.  

3.    

-- ============================================ -->  

4.    

-- Target:

 prepare -->  

5.    

-- ============================================ -->  

6.      

7.          

8.          

9.  

10.      

11.    

-- ============================================ -->  

12.    

-- Target:

 build -->  

13.    

-- ============================================ -->  

14.      

15.          

16.          

17.          

18.          

19.          

20.          

21.          

22.      

23.    

-- ============================================ -->  

24.    

-- (DEFAULT) Target:

 dist -->  

25.    

-- ============================================ -->  

26.      

27.          

28.          

29.              

30.                  

31.              

32.          

33.        

" />  

34.      

35.  

一个phing的构建文件通常以build.xml命名。

如果没有指定文件名,phing会将build.xml作为默认执行的文件。

执行上面构建文件中的默认target,只要直接运行phing。

这将执行名为dist的target。

执行构建文件中的task时将会输出一些信息,显示受影响的文件。

如果要执行其它target,只要在命令行中写明相应的target名字即可。

例如要执行名为build的target,只要执行:

phingbuild即可。

其它命令行参数请参见附录A(Fact Sheet)。

ProjectElement

文档序言之后的第一个元素就是根元素

其它元素必须包含在之中。

它有以下属性:

属性

含意

是否必须

name

项目名称

basedir

当前项目的起始目录,“.”表示当前目录。

注意:

如果未指定此参数,则构建文件的父目录将被设为默认值。

default

指定默认的target。

如果在调用当前文件时未指定target,

将执行默认target。

description

项目描述

TargetElement

一个target可以依赖其它target。

Phing会处理它们之间的依赖关系。

注意,Phing的depend属性仅能指定target的执行顺序,不能确认依赖的target一定执行。

当被依赖的target没有必要执行时,Phing就不会执行它。

Phing按照从左至右的顺序执行depends属性中指定的target。

注意,一个被依赖的target可能在早在之前由于另一个依赖关系的存在而被执行过,这时它将不会再被执行。

下面的例子将说明这一点:

[html]viewplaincopy

1.  

2.  

3.  

4.  

假定我们想执行targetD。

根据它的depends属性,你可能会认为执行顺序会是,C,B,A。

错!

C依赖B,B依赖A,因此A会先执行,然后是B,接下来是C,最后是D。

一个target只会执行一次,即使有很多taget依赖它时也是如此。

description属性用于描述此target,命令行模式时可以通过-projecthelp选项将其打印出来。

TaskElements

一个task是一段可以被执行的php代码。

这段代码完成一个特定的功能(比如安装文件)。

它在构建文件中定义,由Phing来调用。

task的基本结构如下:

[html]viewplaincopy

1.  

name是task名称,attributeN是属性名,valueN是属性值。

有一系列的coretask(参见附录B,CoreTasks)以及一些optionaltask。

你也可以很方便的定义自己的task(参见第6章,ExtendingPhing)。

task可以被赋予一个id属性:

[html]viewplaincopy

1.  

可以在其它task中通id引用这个task。

PropertyElement

property是构建文件中的重要变量。

通过PropertyTask设定property,也可以通过命令方式设定(命令行中设定的property值会覆盖构建文件中的同名property值)。

一个property只能有一个名字和一个值。

property可以成为task的属性值,使用时只需要将property的名字放在“${”和"}"之间即可。

例如,假设我们定义了一个property叫作BC_BUILD_DIR,它的值为‘build’,我们可以这样使用它:

${BC_BUILD_DIR}/en。

这条语句会被解析为build/en。

如果你使用了没有通过propertytask定义的property,phing会从系统的环境变量中查找是否有同名property。

例如,假如你使用了${BCHOME},但你没有在命令行或构建文件中定义它,而环境变量中存在此值,那phing就会使用环境变量中的BCHOME值。

Built-inProperties

phing提供了访问系统属性的方法,其用法和通过task定义的属性一样。

比如,${os.name}代表的操作系统的名子。

更多信息可参见附录A中的Built-InProperties。

MoreComplexBuildfile

[html]viewplaincopy

1.

xml version="1.0" encoding="UTF-8" ?

>  

2.      

3.      

4.      

5.      

6.      

7.    

-- Fileset for all files -->  

8.      

9.          

10.      

11.    

-- ============================================ -->  

12.    

-- (DEFAULT) Target:

 main -->  

13.    

-- ============================================ -->  

14.      

15.          

16.              

17.          

18.      

19.    

-- ============================================ -->  

20.    

-- Target:

 Rebuild -->  

21.    

-- ============================================ -->  

22.      

23.          

24.          

25.      

26.  

这份构建文件首先定义了一些property。

然后定义了一个fileset和二个target。

下面我们来快速解读下这份文件。

project标签中的前五行用于定义property。

它们展现了property标签的两种使用形式:

1.第二个property标签只包含了一个file属性。

这个值必须对应一个property文件,可以使用绝对或相对路径(文件格式参见附录I,FileFormats)。

2.标签中含有name和value属性。

执行后,可以通过${name}的方式取得value值。

接下来我们看标签。

它定义了一个文件集合。

你可以使用inlude和exclude标签来加入或排除文件。

如果给fileset设置了id属性,那么可以通过id引用该fileset。

下面说一说双星表达式“**”。

这个特定的正则表示所有子目录下的所有文件。

而一星“*”,只表示当目录下的所有文件。

例:

[html]viewplaincopy

1.**/*.phps  

表示当前目录下,所有子目录中的后缀为phps的文件。

第一个task是一个

注意copy标签中的fileset,它没有包含include或是exclude元素,而是通过refid引用了之前创建好的一个fileset。

通过这种方式,你可以定义一个fileset,然后多次在构建文件中使用。

在第二个target中唯一值得注意的就是标签(更多信息可参见PhingCallTask)。

这个task执行了和自己位于同一文件中的另外一个target。

第二个target删除了build目录,然后调用main重新构建项目。

如果在命令行中使用-D参数给property赋值,则构建文件中的同名property的值将会被覆盖。

例如,如果在命令行中执行

 

AvailableTask

测试某资源或文件是否存在,并设置某属性为相应的值

例子

[html]viewplaincopy

1.  

2.  

3.  

这里,AvailableTask首先检查/tmp目录下是否存在名为test.txt的文件或目录。

然后检查/home目录下是否有目录foo,接下来检查/home/foo目录下是否存在名为bar的文件或目录

如果/tmp/test.txt存在,test_txt_exists属性将被设为Yes,如果/home/foo存在并且为目录,则properties.yetanother被设为true(默认)。

如果/home/foo/bar存在,foo.bar将被设为“Well,yes”。

ChmodTask

设置文件或目录的权限。

例子

[html]viewplaincopy

1.  

2.  

3.  

更多信息可参见php手册中的chmod([

支持的嵌套标签

ChownTask

改变文件或目录的所有者

例子

[html]viewplaincopy

1.  

2.  

3.  

4.  

支持的嵌套标签

ConditionTask

条件为真时设置某属性值--相当于Available和UpToDate的整合。

注意

如果条件为真,属性值默认被设为true;条件为假,属性值不会被设置。

你可以通过设置value属性来替代默认值。

condition是嵌套元素,你必须指定一个条件(且只能为一个)。

例子

[html]viewplaincopy

1.  

2.      

3.          

4.          

5.      

6.  

CopyTask

拷贝文件或目录

注意

只有当源文件比目标文件新或目标文件不存在时,文件才会被拷贝。

可以明确指定进行文件覆盖。

例子

一方面,CopyTask直持逐个文件的拷贝:

[html]viewplaincopy

1.  

除此之外,CopyTask还支持Fileset,你可以很方便的加入或排除文件。

或多信息可参考FileSet--特别要注意它的defaultexcludes属性。

CopyTask还支持Mappers和Filters,所以你几乎可以完成任何对文件内容和文件名的处理。

[html]viewplaincopy

1.  

2.      

3.          

4.          

5.          

6.      

7.      

8.  

9.  

10.  

11.      

12.          

13.      

14.  

支持的嵌套标签

DeleteTask

删除文件或目录

例子

[html]viewplaincopy

1.<-- Delete a specific file -->  

2.  

3.<-- Delete a directory -->  

4.  

5.<-- Delete using a fileset -->  

6.  

7.      

8.          

9.      

10.  

支持的嵌套标签

EchoTask

向标准输出和日志中输出消息

注意

可以指定日志级别

可以直接向文件输出消息,在这种情况下将会默认使用用append选项替代overwrite,日志级别选项将失效。

除此之外,echotask还可以输出fileset元素中指定的文件的内容。

[html]viewplaincopy

1.

" />  

2.  

3.And don't forget Propel.  

4.This is a test message  

支持的嵌套标签

ExecTask

执行shell命令

注意

使用这个task,你可以很快为Phing增加一条新的命令。

如果你经常使用某命令,建议你为它写一个task。

例子

[html]viewplaincopy

1.<-- List the contents of "/home". -->  

2.  

3.<-- Start the make process in "/usr/src/php-4.0". -->  

4.  

5.<-- List the contents of "/tmp" out to a file. -->  

6. foo.out" escape="false" />  

支持的嵌套标签

IfTask

根据条件的真假执行相应的任务

属性

这个task没有任何属性,待测试的条件通过一组嵌套元素指定。

可用的元素参见(第五章Conditons一节)

一样,只能使用

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

当前位置:首页 > 高等教育 > 医学

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

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