phing教程.docx
- 文档编号:30077898
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:17
- 大小:21.96KB
phing教程.docx
《phing教程.docx》由会员分享,可在线阅读,更多相关《phing教程.docx(17页珍藏版)》请在冰豆网上搜索。
phing教程
XMLAndPhing
一个合法的Phing构建文件有以下几部分构成:
1.文档序言
2.唯一的根元素
3.一些Phing的type元素(比如
4.一个或多个
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提供了访问系统属性的方法,其用法和通过 比如,${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中唯一值得注意的就是 这个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. 4. 支持的嵌套标签 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. 支持的嵌套标签 IfTask 根据条件的真假执行相应的任务 属性 这个task没有任何属性,待测试的条件通过一组嵌套元素指定。 可用的元素参见(第五章Conditons一节) 和
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- phing 教程