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

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

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

系統 1781 0
本章是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>
  

一個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。下面我們來快速解讀下這份文件。

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

接下來我們看<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。



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


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲视频手机在线 | 久久九九热re6这里有精品 | 国产精品亚洲综合色拍 | 国产精品美女一区二区三区 | 色国产视频| 成人欧美精品久久久久影院 | 亚洲一区二区三区在线 | 99久热只有精品视频免费看 | 亚洲视频一区二区 | 天天色天天干天天射 | 日日干天天操 | 欧美国产日韩在线 | 99久久精品免费看国产麻豆 | 四虎精品国产一区二区三区 | 亚洲区视频在线观看 | 成人一级视频 | 97欧美精品一区二区三区 | 四虎永久影院永久影库 | 香港a毛片免费全部播放 | 国产亚洲福利精品一区 | 亚洲天堂一区二区三区 | 99在线播放视频 | 久久久久久久久亚洲 | 亚洲综合激情六月婷婷在线观看 | 91视频这里只有精品 | 国产亚洲精品美女2020久久 | 一本毛片 | 四虎影院免费网址 | 国产欧美日韩综合二区三区 | 四虎影视2022入口网址 | 欧美日韩中文国产一区二区三区 | 国产亚洲精品一区二区 | 国产精品久久久久久久毛片 | 一级做人免费观看c欧美网站 | 国产香蕉在线观看 | 在线激情网址 | 国产成人亚洲日本精品 | 国产视频一二 | a级高清观看视频在线看 | 羞羞视频在线看 | 四虎欧美永久在线精品免费 |