3.一些Phing的type元素(比如,,等)4.一個或多個元素,每個target包含內(nèi)建或用戶自定義的Phingtask元素(例如,等)。WritingASimpleBuildfileFoob" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

phing用戶手冊第四章Getting Started譯文

系統(tǒng) 2075 0
本章是phing的入門篇,查看 原文請猛擊這里

XML And Phing
一個合法的Phing構(gòu)建文件有以下幾部分構(gòu)成:
1.文檔序言
2.唯一的根元素<project>
3.一些Phing的type元素(比如<property>, <fileset>, <patternset>等)
4.一個或多個<target>元素,每個target包含內(nèi)建或用戶自定義的Phing task元素(例如<install>,
<bcc>等)。

Writing A Simple Buildfile
Foobar項(xiàng)目將一些php文件從源目錄安裝到目標(biāo)目錄,并將這些文件作了打包處理。
    <?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的構(gòu)建文件通常以build.xml命名。如果沒有指定文件名,phing會將build.xml作為默認(rèn)執(zhí)行的文件。

執(zhí)行上面構(gòu)建文件中的默認(rèn)target,只要直接運(yùn)行phing。
這將執(zhí)行名為dist的target。執(zhí)行構(gòu)建文件中的task時將會輸出一些信息,顯示受影響的文件。
如果要執(zhí)行其它target,只要在命令行中寫明相應(yīng)的target名字即可。例如要執(zhí)行名為build的target,只要執(zhí)行:phing build即可。
其它命令行參數(shù)請參見附錄A(Fact?Sheet)。

Project Element
文檔序言之后的第一個元素就是根元素<project>。其它元素必須包含在<project>之中。它有以下屬性:
屬性
含意
是否必須
name
項(xiàng)目名稱
basedir
當(dāng)前項(xiàng)目的起始目錄,“.”表示當(dāng)前目錄。
注意:如果未指定此參數(shù),則構(gòu)建文件的父目錄將被設(shè)為默認(rèn)值。
default
指定默認(rèn)的target。如果在調(diào)用當(dāng)前文件時未指定target,
將執(zhí)行默認(rèn)target。
description 項(xiàng)目描述

Target Element
一個target可以依賴其它target。Phing會處理它們之間的依賴關(guān)系。
注意,Phing的depend屬性僅能指定target的執(zhí)行順序,不能確認(rèn)依賴的target一定執(zhí)行。當(dāng)被依賴的target沒有必要執(zhí)行時,Phing就不會執(zhí)行它。
Phing按照從左至右的順序執(zhí)行depends屬性中指定的target。注意,一個被依賴的target可能在早在之前由于另一個依賴關(guān)系的存在而被執(zhí)行過,這時它將不會再被執(zhí)行。
下面的例子將說明這一點(diǎn):
      <target name="A" />

<target name="B" depends="A" />

<target name="C" depends="B" />

<target name="D" depends="C,B,A" />
    
假定我們想執(zhí)行target D。根據(jù)它的depends屬性,你可能會認(rèn)為執(zhí)行順序會是,C,B,A。錯!C依賴B,B依賴A,因此A會先執(zhí)行,然后是B,接下來是C,最后是D。
一個target只會執(zhí)行一次,即使有很多taget依賴它時也是如此。
description屬性用于描述此target,命令行模式時可以通過-projecthelp選項(xiàng)將其打印出來。

Task Elements
一個task是一段可以被執(zhí)行的php代碼。這段代碼完成一個特定的功能(比如安裝文件)。它在構(gòu)建文件中定義,由Phing來調(diào)用。
task的基本結(jié)構(gòu)如下:
      <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是構(gòu)建文件中的重要變量。通過PropertyTask設(shè)定property,也可以通過命令方式設(shè)定(命令行中設(shè)定的property值會覆蓋構(gòu)建文件中的同名property值)。一個property只能有一個名字和一個值。property可以成為task的屬性值,使用時只需要將property的名字放在“${”和"}"之間即可。例如,假設(shè)我們定義了一個property叫作BC_BUILD_DIR,它的值為‘build’,我們可以這樣使用它:${BC_BUILD_DIR}/en。這條語句會被解析為build/en。
如果你使用了沒有通過property task定義的property,phing會從系統(tǒng)的環(huán)境變量中查找是否有同名property。例如,假如你使用了${BCHOME},但你沒有在命令行或構(gòu)建文件中定義它,而環(huán)境變量中存在此值,那phing就會使用環(huán)境變量中的BCHOME值。

Built-in Properties
phing提供了訪問系統(tǒng)屬性的方法,其用法和通過<property>task定義的屬性一樣。比如,${os.name}代表的操作系統(tǒng)的名子。更多信息可參見附錄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>
  


這份構(gòu)建文件首先定義了一些property。然后定義了一個fileset和二個target。下面我們來快速解讀下這份文件。

project標(biāo)簽中的前五行用于定義property。它們展現(xiàn)了property標(biāo)簽的兩種使用形式:
1.第二個property標(biāo)簽只包含了一個file屬性。這個值必須對應(yīng)一個property文件,可以使用絕對或相對路徑(文件格式參見附錄I,F(xiàn)ile Formats)。
2.標(biāo)簽中含有name和value屬性。執(zhí)行后,可以通過${name}的方式取得value值。

接下來我們看<fileset>標(biāo)簽。它定義了一個文件集合。你可以使用inlude和exclude標(biāo)簽來加入或排除文件。如果給fileset設(shè)置了id屬性,那么可以通過id引用該fileset。

下面說一說雙星表達(dá)式“**”。這個特定的正則表示所有子目錄下的所有文件。而一星“*”,只表示當(dāng)目錄下的所有文件。
例:
      **/*.phps
    
表示當(dāng)前目錄下,所有子目錄中的后綴為phps的文件。

第一個task是一個<copy>。注意copy標(biāo)簽中的fileset,它沒有包含include或是exclude元素,而是通過refid引用了之前創(chuàng)建好的一個fileset。通過這種方式,你可以定義一個fileset,然后多次在構(gòu)建文件中使用。

在第二個target中唯一值得注意的就是<phingcall> 標(biāo)簽(更多信息可參見PhingCallTask)。這個task執(zhí)行了和自己位于同一文件中的另外一個target。第二個target刪除了build目錄,然后調(diào)用main重新構(gòu)建項(xiàng)目。

如果在命令行中使用-D參數(shù)給property賦值,則構(gòu)建文件中的同名property的值將會被覆蓋。例如,如果在命令行中執(zhí)行
      phing -Dbuilddir=/tmp/system-test
    
上例中的builddir值將不再是./build/testsite,而是/tmp/system-test。



phing用戶手冊第四章Getting Started譯文


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 富川| 八宿县| 彭泽县| 始兴县| 忻城县| 娱乐| 丹巴县| 松溪县| 信宜市| 姚安县| 铅山县| 城固县| 乳源| 汤阴县| 鄂托克前旗| 武隆县| 射洪县| 合水县| 西乌珠穆沁旗| 繁峙县| 正宁县| 昌邑市| 烟台市| 宝应县| 乡城县| 忻城县| 鱼台县| 铜陵市| 永福县| 饶阳县| 玛多县| 黄山市| 江城| 南丰县| 天等县| 碌曲县| 灵台县| 临江市| 尼木县| 贵溪市| 白玉县|