phing用户手册第四章Getting Started译文
生活随笔
收集整理的這篇文章主要介紹了
phing用户手册第四章Getting Started译文
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本章是phing的入門篇,查看 原文請猛擊這里。
XML And Phing 一個合法的Phing構建文件有以下幾部分構成: 1.文檔序言 2.唯一的根元素<project> 3.一些Phing的type元素(比如<property>, <fileset>, <patternset>等) 4.一個或多個<target>元素,每個target包含內建或用戶自定義的Phing task元素(例如<install>, <bcc>等)。
Writing A Simple Buildfile Foobar項目將一些php文件從源目錄安裝到目標目錄,并將這些文件作了打包處理。 <?xml version="1.0" encoding="UTF-8"?> <project name="FooBar" default="dist"><!-- ============================================ --><!-- Target: prepare --><!-- ============================================ --><target name="prepare"><echo msg="Making directory ./build" /><mkdir dir="./build" /></target><!-- ============================================ --><!-- Target: build --><!-- ============================================ --><target name="build" depends="prepare"><echo msg="Copying files to build directory..." /><echo msg="Copying ./about.php to ./build directory..." /><copy file="./about.php" tofile="./build/about.php" /><echo msg="Copying ./browsers.php to ./build directory..." /><copy file="./browsers.php" tofile="./build/browsers.php" /><echo msg="Copying ./contact.php to ./build directory..." /><copy file="./contact.php" tofile="./build/contact.php" /></target><!-- ============================================ --><!-- (DEFAULT) Target: dist --><!-- ============================================ --><target name="dist" depends="build"><echo msg="Creating archive..." /><tar destfile="./build/build.tar.gz" compression="gzip"><fileset dir="./build"><include name="*" /></fileset></tar><echo msg="Files copied and compressed in build directory OK!" /></target> </project>
Project Element 文檔序言之后的第一個元素就是根元素<project>。其它元素必須包含在<project>之中。它有以下屬性:
Target Element 一個target可以依賴其它target。Phing會處理它們之間的依賴關系。 注意,Phing的depend屬性僅能指定target的執行順序,不能確認依賴的target一定執行。當被依賴的target沒有必要執行時,Phing就不會執行它。 Phing按照從左至右的順序執行depends屬性中指定的target。注意,一個被依賴的target可能在早在之前由于另一個依賴關系的存在而被執行過,這時它將不會再被執行。 下面的例子將說明這一點: <target name="A" /> <target name="B" depends="A" /> <target name="C" depends="B" /> <target name="D" depends="C,B,A" /> 假定我們想執行target D。根據它的depends屬性,你可能會認為執行順序會是,C,B,A。錯!C依賴B,B依賴A,因此A會先執行,然后是B,接下來是C,最后是D。 一個target只會執行一次,即使有很多taget依賴它時也是如此。 description屬性用于描述此target,命令行模式時可以通過-projecthelp選項將其打印出來。
Task Elements 一個task是一段可以被執行的php代碼。這段代碼完成一個特定的功能(比如安裝文件)。它在構建文件中定義,由Phing來調用。 task的基本結構如下: <name attribute1="value1" attribute2="value2" ... /> name是task名稱,attributeN是屬性名,valueN是屬性值。 有一系列的core task(參見附錄B,Core Tasks)以及一些optional task。你也可以很方便的定義自己的task(參見第6章,Extending Phing)。 task可以被賦予一個id屬性: <taskname id="taskID" ... /> 可以在其它task中通id引用這個task。
Property Element property是構建文件中的重要變量。通過PropertyTask設定property,也可以通過命令方式設定(命令行中設定的property值會覆蓋構建文件中的同名property值)。一個property只能有一個名字和一個值。property可以成為task的屬性值,使用時只需要將property的名字放在“${”和"}"之間即可。例如,假設我們定義了一個property叫作BC_BUILD_DIR,它的值為‘build’,我們可以這樣使用它:${BC_BUILD_DIR}/en。這條語句會被解析為build/en。 如果你使用了沒有通過property task定義的property,phing會從系統的環境變量中查找是否有同名property。例如,假如你使用了${BCHOME},但你沒有在命令行或構建文件中定義它,而環境變量中存在此值,那phing就會使用環境變量中的BCHOME值。
Built-in Properties phing提供了訪問系統屬性的方法,其用法和通過<property>task定義的屬性一樣。比如,${os.name}代表的操作系統的名子。更多信息可參見附錄A中的Built-In Properties。
More Complex Buildfile <?xml version="1.0" encoding="UTF-8" ?><project name="testsite" basedir="." default="main"><property file="./build.properties" /><property name="package" value="${phing.project.name}" override="true" /><property name="builddir" value="./build/testsite" override="true" /><property name="srcdir" value="${project.basedir}" override="true" /><!-- Fileset for all files --><fileset dir="." id="allfiles"><include name="**" /></fileset><!-- ============================================ --><!-- (DEFAULT) Target: main --><!-- ============================================ --><target name="main" description="main target"><copy todir="${builddir}"><fileset refid="allfiles" /></copy></target><!-- ============================================ --><!-- Target: Rebuild --><!-- ============================================ --><target name="rebuild" description="rebuilds this package"><delete dir="${builddir}" /><phingcall target="main" /></target> </project>
接下來我們看<fileset>標簽。它定義了一個文件集合。你可以使用inlude和exclude標簽來加入或排除文件。如果給fileset設置了id屬性,那么可以通過id引用該fileset。
下面說一說雙星表達式“**”。這個特定的正則表示所有子目錄下的所有文件。而一星“*”,只表示當目錄下的所有文件。 例: **/*.phps 表示當前目錄下,所有子目錄中的后綴為phps的文件。
第一個task是一個<copy>。注意copy標簽中的fileset,它沒有包含include或是exclude元素,而是通過refid引用了之前創建好的一個fileset。通過這種方式,你可以定義一個fileset,然后多次在構建文件中使用。
在第二個target中唯一值得注意的就是<phingcall> 標簽(更多信息可參見PhingCallTask)。這個task執行了和自己位于同一文件中的另外一個target。第二個target刪除了build目錄,然后調用main重新構建項目。
如果在命令行中使用-D參數給property賦值,則構建文件中的同名property的值將會被覆蓋。例如,如果在命令行中執行 phing -Dbuilddir=/tmp/system-test 上例中的builddir值將不再是./build/testsite,而是/tmp/system-test。
XML And Phing 一個合法的Phing構建文件有以下幾部分構成: 1.文檔序言 2.唯一的根元素<project> 3.一些Phing的type元素(比如<property>, <fileset>, <patternset>等) 4.一個或多個<target>元素,每個target包含內建或用戶自定義的Phing task元素(例如<install>, <bcc>等)。
Writing A Simple Buildfile Foobar項目將一些php文件從源目錄安裝到目標目錄,并將這些文件作了打包處理。 <?xml version="1.0" encoding="UTF-8"?> <project name="FooBar" default="dist"><!-- ============================================ --><!-- Target: prepare --><!-- ============================================ --><target name="prepare"><echo msg="Making directory ./build" /><mkdir dir="./build" /></target><!-- ============================================ --><!-- Target: build --><!-- ============================================ --><target name="build" depends="prepare"><echo msg="Copying files to build directory..." /><echo msg="Copying ./about.php to ./build directory..." /><copy file="./about.php" tofile="./build/about.php" /><echo msg="Copying ./browsers.php to ./build directory..." /><copy file="./browsers.php" tofile="./build/browsers.php" /><echo msg="Copying ./contact.php to ./build directory..." /><copy file="./contact.php" tofile="./build/contact.php" /></target><!-- ============================================ --><!-- (DEFAULT) Target: dist --><!-- ============================================ --><target name="dist" depends="build"><echo msg="Creating archive..." /><tar destfile="./build/build.tar.gz" compression="gzip"><fileset dir="./build"><include name="*" /></fileset></tar><echo msg="Files copied and compressed in build directory OK!" /></target> </project>
一個phing的構建文件通常以build.xml命名。如果沒有指定文件名,phing會將build.xml作為默認執行的文件。
執行上面構建文件中的默認target,只要直接運行phing。 這將執行名為dist的target。執行構建文件中的task時將會輸出一些信息,顯示受影響的文件。 如果要執行其它target,只要在命令行中寫明相應的target名字即可。例如要執行名為build的target,只要執行:phing build即可。 其它命令行參數請參見附錄A(Fact?Sheet)。Project Element 文檔序言之后的第一個元素就是根元素<project>。其它元素必須包含在<project>之中。它有以下屬性:
| 屬性 | 含意 | 是否必須 |
| name | 項目名稱 | 否 |
| basedir | 當前項目的起始目錄,“.”表示當前目錄。 注意:如果未指定此參數,則構建文件的父目錄將被設為默認值。 | 否 |
| default | 指定默認的target。如果在調用當前文件時未指定target, 將執行默認target。 | 是 |
| description | 項目描述 | 否 |
Target Element 一個target可以依賴其它target。Phing會處理它們之間的依賴關系。 注意,Phing的depend屬性僅能指定target的執行順序,不能確認依賴的target一定執行。當被依賴的target沒有必要執行時,Phing就不會執行它。 Phing按照從左至右的順序執行depends屬性中指定的target。注意,一個被依賴的target可能在早在之前由于另一個依賴關系的存在而被執行過,這時它將不會再被執行。 下面的例子將說明這一點: <target name="A" /> <target name="B" depends="A" /> <target name="C" depends="B" /> <target name="D" depends="C,B,A" /> 假定我們想執行target D。根據它的depends屬性,你可能會認為執行順序會是,C,B,A。錯!C依賴B,B依賴A,因此A會先執行,然后是B,接下來是C,最后是D。 一個target只會執行一次,即使有很多taget依賴它時也是如此。 description屬性用于描述此target,命令行模式時可以通過-projecthelp選項將其打印出來。
Task Elements 一個task是一段可以被執行的php代碼。這段代碼完成一個特定的功能(比如安裝文件)。它在構建文件中定義,由Phing來調用。 task的基本結構如下: <name attribute1="value1" attribute2="value2" ... /> name是task名稱,attributeN是屬性名,valueN是屬性值。 有一系列的core task(參見附錄B,Core Tasks)以及一些optional task。你也可以很方便的定義自己的task(參見第6章,Extending Phing)。 task可以被賦予一個id屬性: <taskname id="taskID" ... /> 可以在其它task中通id引用這個task。
Property Element property是構建文件中的重要變量。通過PropertyTask設定property,也可以通過命令方式設定(命令行中設定的property值會覆蓋構建文件中的同名property值)。一個property只能有一個名字和一個值。property可以成為task的屬性值,使用時只需要將property的名字放在“${”和"}"之間即可。例如,假設我們定義了一個property叫作BC_BUILD_DIR,它的值為‘build’,我們可以這樣使用它:${BC_BUILD_DIR}/en。這條語句會被解析為build/en。 如果你使用了沒有通過property task定義的property,phing會從系統的環境變量中查找是否有同名property。例如,假如你使用了${BCHOME},但你沒有在命令行或構建文件中定義它,而環境變量中存在此值,那phing就會使用環境變量中的BCHOME值。
Built-in Properties phing提供了訪問系統屬性的方法,其用法和通過<property>task定義的屬性一樣。比如,${os.name}代表的操作系統的名子。更多信息可參見附錄A中的Built-In Properties。
More Complex Buildfile <?xml version="1.0" encoding="UTF-8" ?><project name="testsite" basedir="." default="main"><property file="./build.properties" /><property name="package" value="${phing.project.name}" override="true" /><property name="builddir" value="./build/testsite" override="true" /><property name="srcdir" value="${project.basedir}" override="true" /><!-- Fileset for all files --><fileset dir="." id="allfiles"><include name="**" /></fileset><!-- ============================================ --><!-- (DEFAULT) Target: main --><!-- ============================================ --><target name="main" description="main target"><copy todir="${builddir}"><fileset refid="allfiles" /></copy></target><!-- ============================================ --><!-- Target: Rebuild --><!-- ============================================ --><target name="rebuild" description="rebuilds this package"><delete dir="${builddir}" /><phingcall target="main" /></target> </project>
這份構建文件首先定義了一些property。然后定義了一個fileset和二個target。下面我們來快速解讀下這份文件。
接下來我們看<fileset>標簽。它定義了一個文件集合。你可以使用inlude和exclude標簽來加入或排除文件。如果給fileset設置了id屬性,那么可以通過id引用該fileset。
下面說一說雙星表達式“**”。這個特定的正則表示所有子目錄下的所有文件。而一星“*”,只表示當目錄下的所有文件。 例: **/*.phps 表示當前目錄下,所有子目錄中的后綴為phps的文件。
第一個task是一個<copy>。注意copy標簽中的fileset,它沒有包含include或是exclude元素,而是通過refid引用了之前創建好的一個fileset。通過這種方式,你可以定義一個fileset,然后多次在構建文件中使用。
在第二個target中唯一值得注意的就是<phingcall> 標簽(更多信息可參見PhingCallTask)。這個task執行了和自己位于同一文件中的另外一個target。第二個target刪除了build目錄,然后調用main重新構建項目。
如果在命令行中使用-D參數給property賦值,則構建文件中的同名property的值將會被覆蓋。例如,如果在命令行中執行 phing -Dbuilddir=/tmp/system-test 上例中的builddir值將不再是./build/testsite,而是/tmp/system-test。
轉載于:https://www.cnblogs.com/snake-hand/p/3144956.html
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的phing用户手册第四章Getting Started译文的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: boost function对象
- 下一篇: 微信公众平台开发入门教程[2019版]