<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Junky's IT Notebook

    統(tǒng)計(jì)

    留言簿(8)

    積分與排名

    WebSphere Studio

    閱讀排行榜

    評(píng)論排行榜

    Ant全攻略

    轉(zhuǎn)自: BEA 論壇 powerise ?
    1.Ant
    是什么?

    Ant
    是一種基于 Java XML build 工具。


    2
    下載、安裝 Ant
    安裝
    Ant
    下載 .zip 文件,解壓縮到 c:\ant1.3( 后面引用為
    %ANT_HOME%)

    2.1
    在你運(yùn)行 Ant 之前需要做一些配置工作。

    ·
    bin 目錄加入 PATH 環(huán)境變量。
    ·
    設(shè)定 ANT_HOME 環(huán)境變量,指向你安裝 Ant 的目錄。在一些 OS 上, Ant 的腳本可以猜測(cè) ANT_HOME Unix Windos NT/2000 )-但最好不要依賴這一特性。

    ·
    可選地,設(shè)定 JAVA_HOME 環(huán)境變量(參考下面的高級(jí)小節(jié)),該變量應(yīng)該指向你安裝 JDK 的目錄。
    注意:不要將 Ant ant.jar 文件放到 JDK/JRE lib/ext 目錄下。 Ant 是個(gè)應(yīng)用程序,而 lib/ext 目錄是為 JDK 擴(kuò)展使用的(如 JCE , JSSE 擴(kuò)展)。而且通過(guò)擴(kuò)展裝入的類會(huì)有安全方面的限制。
    2.2
    運(yùn)行 Ant

    運(yùn)行 Ant 非常簡(jiǎn)單,當(dāng)你正確地安裝 Ant 后,只要輸入 ant 就可以了。


    n
    沒(méi)有指定任何參數(shù)時(shí), Ant 會(huì)在當(dāng)前目錄下查詢 build.xml 文件。如果找到了就用該文件作為 buildfile 。如果你用 -find 選項(xiàng)。 Ant 就會(huì)在上級(jí)目錄中尋找 buildfile ,直至到達(dá)文件系統(tǒng)的根。要想讓 Ant 使用其他的 buildfile ,可以用參數(shù) -buildfile file ,這里 file 指定了你想使用的 buildfile

    n
    可以指定執(zhí)行一個(gè)或多個(gè) target 。當(dāng)省略 target 時(shí), Ant 使用標(biāo)簽 <project> default 屬性所指定的 target 。


    命令行選項(xiàng)總結(jié):
    ant [options] [target [target2 [target3] ...]]
    Options:
    -help print this message
    -projecthelp print project help information
    -version print the version information and exit
    -quiet be extra quiet
    -verbose be extra verbose
    -debug print debugging information
    -emacs produce logging information without adornments
    -logfile file use given file for log output
    -logger classname the class that is to perform logging
    -listener classname add an instance of class as a project listener
    -buildfile file use specified buildfile
    -find file search for buildfile towards the root of the filesystem and use the first one found
    -Dproperty=value set property to value
    例子
    ant
    使用當(dāng)前目錄下的 build.xml 運(yùn)行 Ant ,執(zhí)行缺省的 target 。
    ant -buildfile test.xml
    使用當(dāng)前目錄下的 test.xml 運(yùn)行 Ant ,執(zhí)行缺省的 target 。
    ant -buildfile test.xml dist
    使用當(dāng)前目錄下的 test.xml 運(yùn)行 Ant ,執(zhí)行一個(gè)叫做 dist target
    ant -buildfile test.xml -Dbuild=build/classes dist
    使用當(dāng)前目錄下的 test.xml 運(yùn)行 Ant ,執(zhí)行一個(gè)叫做 dist target ,并設(shè)定 build 屬性的值為 build/classes 。

    3
    編寫 build.xml

    Ant
    buildfile 是用 XML 寫的。每個(gè) buildfile 含有一個(gè) project 。


    buildfile
    中每個(gè) task 元素可以有一個(gè) id 屬性,可以用這個(gè) id 值引用指定的任務(wù)。這個(gè)值必須是唯一的。(詳情請(qǐng)參考下面的 Task 小節(jié))

    3.1 Projects

    project
    有下面的屬性:
    Attribute Description Required
    name
    項(xiàng)目名稱 . No
    default
    當(dāng)沒(méi)有指定 target 時(shí)使用的缺省
    target Yes
    basedir
    用于計(jì)算所有其他路徑的基路徑。該屬性可以被 basedir property 覆蓋。當(dāng)覆蓋時(shí),該屬性被忽略。如果屬性和 basedir property 都沒(méi)有設(shè)定,就使用 buildfile 文件的父目錄。
    No
    項(xiàng)目的描述以一個(gè)頂級(jí)的 <description> 元素的形式出現(xiàn)(參看 description 小節(jié))。


    一個(gè)項(xiàng)目可以定義一個(gè)或多個(gè) target 。一個(gè) target 是一系列你想要執(zhí)行的。執(zhí)行 Ant 時(shí),你可以選擇執(zhí)行那個(gè) target 。當(dāng)沒(méi)有給定 target 時(shí),使用 project default 屬性所確定的 target

    3.2 Targets

    一個(gè) target 可以依賴于其他的 target 。例如,你可能會(huì)有一個(gè) target 用于編譯程序,一個(gè) target 用于生成可執(zhí)行文件。你在生成可執(zhí)行文件之前必須先編譯通過(guò),所以生成可執(zhí)行文件的 target 依賴于編譯 target 。 Ant 會(huì)處理這種依賴關(guān)系。

    然而,應(yīng)當(dāng)注意到, Ant depends 屬性只指定了 target 應(yīng)該被執(zhí)行的順序-如果被依賴的 target 無(wú)法運(yùn)行,這種 depends 對(duì)于指定了依賴關(guān)系的 target 就沒(méi)有影響。

    Ant
    會(huì)依照 depends 屬性中 target 出現(xiàn)的順序(從左到右)依次執(zhí)行每個(gè) target 。然而,要記住的是只要某個(gè) target 依賴于一個(gè) target ,后者就會(huì)被先執(zhí)行。
    <target name="A"/>
    <target name="B" depends="A"/>
    <target name="C" depends="B"/>
    <target name="D" depends="C,B,A"/>
    假定我們要執(zhí)行 target D 。從它的依賴屬性來(lái)看,你可能認(rèn)為先執(zhí)行 C ,然后 B ,最后 A 被執(zhí)行。錯(cuò)了, C 依賴于 B B 依賴于 A ,所以先執(zhí)行 A ,然后 B ,然后 C ,最后 D 被執(zhí)行。

    一個(gè) target 只能被執(zhí)行一次,即時(shí)有多個(gè) target 依賴于它(看上面的例子)。

    如果(或如果不)某些屬性被設(shè)定,才執(zhí)行某個(gè) target 。這樣,允許根據(jù)系統(tǒng)的狀態(tài)( java version, OS, 命令行屬性定義等等)來(lái)更好地控制 build 的過(guò)程。要想讓一個(gè) target 這樣做,你就應(yīng)該在 target 元素中,加入 if (或 unless )屬性,帶上 target 因該有所判斷的屬性。例如:
    <target name="build-module-A" if="module-A-present"/>
    <target name="build-own-fake-module-A" unless="module-A-present"/>
    如果沒(méi)有 if unless 屬性, target 總會(huì)被執(zhí)行。

    可選的 description 屬性可用來(lái)提供關(guān)于 target 的一行描述,這些描述可由 -projecthelp 命令行選項(xiàng)輸出。

    將你的 tstamp task 在一個(gè)所謂的初始化 target 是很好的做法,其他的 target 依賴這個(gè)初始化 target 。要確保初始化 target 是出現(xiàn)在其他 target 依賴表中的第一個(gè) target 。在本手冊(cè)中大多數(shù)的初始化 target 的名字是 "init" 。

    target
    有下面的屬性:
    Attribute Description Required
    name target
    的名字 Yes
    depends
    用逗號(hào)分隔的 target 的名字列表,也就是依賴表。
    No
    if
    執(zhí)行 target 所需要設(shè)定的屬性名。
    No
    unless
    執(zhí)行 target 需要清除設(shè)定的屬性名。
    No
    description
    關(guān)于 target 功能的簡(jiǎn)短描述。
    No

    3.3 Tasks

    一個(gè) task 是一段可執(zhí)行的代碼。


    一個(gè) task 可以有多個(gè)屬性(如果你愿意的話,可以將其稱之為變量)。屬性只可能包含對(duì) property 的引用。這些引用會(huì)在 task 執(zhí)行前被解析。

    下面是 Task 的一般構(gòu)造形式:
    <name attribute1="value1" attribute2="value2" ... />
    這里 name task 的名字, attributeN 是屬性名, valueN 是屬性值。

    有一套內(nèi)置的( built-in task ,以及一些可選 task ,但你也可以編寫自己的 task 。

    所有的 task 都有一個(gè) task 名字屬性。 Ant 用屬性值來(lái)產(chǎn)生日志信息。

    可以給 task 賦一個(gè) id 屬性:
    <taskname id="taskID" ... />
    這里 taskname task 的名字,而 taskID 是這個(gè) task 的唯一標(biāo)識(shí)符。通過(guò)這個(gè)標(biāo)識(shí)符,你可以在腳本中引用相應(yīng)的 task 。例如,在腳本中你可以這樣:
    <script ... >
    task1.setFoo("bar");
    </script>
    設(shè)定某個(gè) task 實(shí)例的 foo 屬性。在另一個(gè) task 中(用 java 編寫),你可以利用下面的語(yǔ)句存取相應(yīng)的實(shí)例。
    project.getReference("task1").
    注意 1 :如果 task1 還沒(méi)有運(yùn)行,就不會(huì)被生效(例如:不設(shè)定屬性),如果你在隨后配置它,你所作的一切都會(huì)被覆蓋。

    注意 2 :未來(lái)的 Ant 版本可能不會(huì)兼容這里所提的屬性,因?yàn)楹苡锌赡芨緵](méi)有 task 實(shí)例,只有 proxies 。

    3.4 Properties

    一個(gè) project 可以有很多的 properties ??梢栽?/span> buildfile 中用 property task 來(lái)設(shè)定,或在 Ant 之外設(shè)定。一個(gè) property 有一個(gè)名字和一個(gè)值。 property 可用于 task 的屬性值。這是通過(guò)將屬性名放在 "${" "}" 之間并放在屬性值的位置來(lái)實(shí)現(xiàn)的。例如如果有一個(gè) property builddir 的值是 "build" ,這個(gè) property 就可用于屬性值: ${builddir}/classes 。這個(gè)值就可被解析為 build/classes

    內(nèi)置屬性

    如果你使用了 <property> task 定義了所有的系統(tǒng)屬性, Ant 允許你使用這些屬性。例如, ${os.name} 對(duì)應(yīng)操作系統(tǒng)的名字。

    要想得到系統(tǒng)屬性的列表可參考 the Javadoc of System.getProperties

    除了 Java 的系統(tǒng)屬性, Ant 還定義了一些自己的內(nèi)置屬性:
    basedir project
    基目錄的絕對(duì)路徑 ( <project> basedir 屬性一樣 ) 。

    ant.file buildfile
    的絕對(duì)路徑。
    ant.version Ant
    的版本。
    ant.project.name
    當(dāng)前執(zhí)行的 project 的名字;由 <project> name 屬性設(shè)定 .
    ant.java.version Ant
    檢測(cè)到的 JVM 的版本; 目前的值有
    "1.1", "1.2", "1.3" and "1.4".
    ???
    例子

    <project name="MyProject" default="dist" basedir=".">

    <!-- set global properties for this build -->
    <property name="src" value="."/>
    <property name="build" value="build"/>
    <property name="dist" value="dist"/>
    ???
    <target name="init">
    <!-- Create the time stamp -->
    <tstamp/>
    <!-- Create the build directory structure used by compile -->
    <mkdir dir="${build}"/>
    </target>
    ?
    <target name="compile" depends="init">
    <!-- Compile the java code from ${src} into ${build} -->
    <javac srcdir="${src}" destdir="${build}"/>
    </target>

    <target name="dist" depends="compile">
    <!-- Create the distribution directory -->
    <mkdir dir="${dist}/lib"/>
    <!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file -->
    <jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}"/>
    </target>

    <target name="clean">
    <!-- Delete the ${build} and ${dist} directory trees -->
    <delete dir="${build}"/>
    <delete dir="${dist}"/>
    </target>

    </project>

    3.5 Path-like Structures

    你可以用 ":" ";" 作為分隔符,指定類似 PATH CLASSPATH 的引用。 Ant 會(huì)把分隔符轉(zhuǎn)換為當(dāng)前系統(tǒng)所用的分隔符。

    當(dāng)需要指定類似路徑的值時(shí),可以使用嵌套元素。一般的形式是
    <classpath>
    <pathelement path="${classpath}"/>
    <pathelement location="lib/helper.jar"/>
    </classpath>
    location
    屬性指定了相對(duì)于 project 基目錄的一個(gè)文件和目錄,而 path 屬性接受逗號(hào)或分號(hào)分隔的一個(gè)位置列表。 path 屬性一般用作預(yù)定義的路徑--其他情況下,應(yīng)該用多個(gè) location 屬性。

    為簡(jiǎn)潔起見(jiàn), classpath 標(biāo)簽支持自己的 path location 屬性。所以:
    <classpath>
    <pathelement path="${classpath}"/>
    </classpath>
    可以被簡(jiǎn)寫作:
    <classpath path="${classpath}"/>
    也可通過(guò) <fileset> 元素指定路徑。構(gòu)成一個(gè) fileset 的多個(gè)文件加入 path-like structure 的順序是未定的。
    <classpath>
    <pathelement path="${classpath}"/>
    <fileset dir="lib">
    <include name="**/*.jar"/>
    </fileset>
    <pathelement location="classes"/>
    </classpath>
    上面的例子構(gòu)造了一個(gè)路徑值包括: ${classpath} 的路徑,跟著 lib 目錄下的所有 jar 文件,接著是 classes 目錄。

    如果你想在多個(gè) task 中使用相同的 path-like structure ,你可以用 <path> 元素定義他們(與 target 同級(jí)),然后通過(guò) id 屬性引用--參考 Referencs 例子。

    path-like structure
    可能包括對(duì)另一個(gè) path-like structurede 的引用(通過(guò)嵌套 <path> 元素):
    <path id="base.path">
    <pathelement path="${classpath}"/>
    <fileset dir="lib">
    <include name="**/*.jar"/>
    </fileset>
    <pathelement location="classes"/>
    </path>
    <path id="tests.path">
    <path refid="base.path"/>
    <pathelement location="testclasses"/>
    </path>
    前面所提的關(guān)于 <classpath> 的簡(jiǎn)潔寫法對(duì)于 <path> 也是有效的,如:
    <path id="tests.path">
    ? <path refid="base.path"/>
    <pathelement location="testclasses"/>
    </path>
    可寫成:
    <path id="base.path" path="${classpath}"/>
    命令行變量

    有些 task 可接受參數(shù),并將其傳遞給另一個(gè)進(jìn)程。為了能在變量中包含空格字符,可使用嵌套的 arg 元素。
    Attribute Description Required
    value
    一個(gè)命令行變量;可包含空格字符。 只能用一個(gè)
    line
    空格分隔的命令行變量列表。
    file
    作為命令行變量的文件名;會(huì)被文件的絕對(duì)名替代。

    path
    一個(gè)作為單個(gè)命令行變量的 path-like 的字符串;或作為分隔符, Ant 會(huì)將其轉(zhuǎn)變?yōu)樘囟ㄆ脚_(tái)的分隔符。


    例子

    <arg value="-l -a"/>
    是一個(gè)含有空格的單個(gè)的命令行變量。
    <arg line="-l -a"/>
    是兩個(gè)空格分隔的命令行變量。
    <arg path="/dir;/dir2:\dir3"/>
    是一個(gè)命令行變量,其值在 DOS 系統(tǒng)上為 \dir;\dir2;\dir3 ;在 Unix 系統(tǒng)上為 /dir:/dir2:/dir3

    3.6 References

    buildfile
    元素的 id 屬性可用來(lái)引用這些元素。如果你需要一遍遍的復(fù)制相同的 XML 代碼塊,這一屬性就很有用--如多次使用 <classpath> 結(jié)構(gòu)。

    下面的例子:
    <project ... >
    <target ... >???
    <rmic ...>?????
    <classpath>???????
    <pathelement location="lib/"/>???????
    <pathelement path="${java.class.path}/"/>???????
    <pathelement path="${additional.path}"/>?????
    </classpath>???
    </rmic>?
    </target>
    <target ... >
    <javac ...>
    <classpath>
    <pathelement location="lib/"/>
    <pathelement path="${java.class.path}/"/>
    <pathelement path="${additional.path}"/>
    </classpath>
    </javac>
    </target>
    </project>
    可以寫成如下形式:
    <project ... >
    <path id="project.class.path">?
    <pathelement location="lib/"/>
    <pathelement path="${java.class.path}/"/>??
    <pathelement path="${additional.path}"/>
    </path>
    <target ... >
    <rmic ...>
    <classpath refid="project.class.path"/>
    </rmic>
    </target>
    <target ... >
    <javac ...>
    <classpath refid="project.class.path"/>
    </javac>
    </target>
    </project>
    所有使用 PatternSets, FileSets path-like structures 嵌套元素的 task 也接受這種類型的引用。
    ================================================================

    ?????????????????????????????? Ant
    全攻略(續(xù))--- Ant 中的內(nèi)置任務(wù)

    4.1 File
    Directory )類
    4.1.1 Mkdir
    n
    創(chuàng)建一個(gè)目錄,如果他的父目錄不存在,也會(huì)被同時(shí)創(chuàng)建。
    n
    例子:
    <mkdir dir="build/classes"/>
    n
    說(shuō)明: 如果 build 不存在,也會(huì)被同時(shí)創(chuàng)建
    4.1.2 Copy
    n
    拷貝一個(gè)(組)文件、目錄
    n
    例子:
    1.
    拷貝單個(gè)的文件:
    <copy file="myfile.txt" tofile="mycopy.txt"/>
    2.
    拷貝單個(gè)的文件到指定目錄下

    <copy file="myfile.txt" todir="../some/other/dir"/>
    3.
    拷貝一個(gè)目錄到另外一個(gè)目錄下
    ? <copy todir="../new/dir">
    ??? <fileset dir="src_dir"/>
    ? </copy>
    4.
    拷貝一批文件到指定目錄下
    ? <copy todir="../dest/dir">
    ??? <fileset dir="src_dir">
    ????? <exclude name="**/*.java"/>
    ??? </fileset>
    ? </copy>

    ? <copy todir="../dest/dir">
    ??? <fileset dir="src_dir" excludes="**/*.java"/>
    ? </copy>
    5.
    拷貝一批文件到指定目錄下,將文件名后增加。 Bak 后綴
    ? <copy todir="../backup/dir">
    ??? <fileset dir="src_dir"/>
    ??? <mapper type="glob" from="*" to="*.bak"/>
    ? </copy>
    6.
    拷貝一組文件到指定目錄下,替換其中的 @ 標(biāo)簽 @ 內(nèi)容
    ? <copy todir="../backup/dir">
    ??? <fileset dir="src_dir"/>
    ??? <filterset>
    ????? <filter token="TITLE" value="Foo Bar"/>
    ??? </filterset>
    ? </copy>
    4.1.3 Delete
    n
    刪除一個(gè)(組)文件或者目錄
    n
    例子
    1.
    刪除一個(gè)文件
    <delete file="/lib/ant.jar"/>
    2.
    刪除指定目錄及其子目錄
    ? <delete dir="lib"/>
    3.
    刪除指定的一組文件
    ? <delete>
    ??? <fileset dir="." includes="**/*.bak"/>
    ? </delete>
    4.
    刪除指定目錄及其子目錄,包括他自己
    ? <delete includeEmptyDirs="true">
    ??? <fileset dir="build"/>
    ? </delete>
    4.1.4 Move
    n
    移動(dòng)或重命名一個(gè)(組)文件、目錄
    n
    例子:
    1.
    移動(dòng)或重命名一個(gè)文件
    <move file="file.orig" tofile="file.moved"/>
    2.
    移動(dòng)或重命名一個(gè)文件到另一個(gè)文件夾下面
    <move file="file.orig" todir="dir/to/move/to"/>
    3.
    將一個(gè)目錄移到另外一個(gè)目錄下
    <move todir="new/dir/to/move/to">
    <fileset dir="src/dir"/>
    </move>
    4.
    將一組文件移動(dòng)到另外的目錄下
    <move todir="some/new/dir">
    <fileset dir="my/src/dir">
    <include name="**/*.jar"/>
    <exclude name="**/ant.jar"/>
    </fileset>
    </move>
    5.
    移動(dòng)文件過(guò)程中增加。 Bak 后綴
    <move todir="my/src/dir">
    <fileset dir="my/src/dir">
    <exclude name="**/*.bak"/>
    </fileset>
    <mapper type="glob" from="*" to="*.bak"/>
    </move>

    ? ================================================================
    ???????????????????????????????????????????? Ant
    全攻略 ? --? Java 相關(guān)任務(wù)

    4.2.1 Javac
    n
    編譯 java 原代碼
    n
    例子
    1. <javac srcdir="${src}"
    ???????? destdir="${build}"
    ???????? classpath="xyz.jar"
    ???????? debug="on"
    ? />
    編譯 ${src} 目錄及其子目錄下的所有。 Java 文件,。 Class 文件將放在 $ build }指定的目錄下, classpath 表示需要用到的類文件或者目錄, debug 設(shè)置為 on 表示輸出 debug 信息
    2. <javac srcdir="${src}:${src2}"
    ???????? destdir="${build}"
    ???????? includes="mypackage/p1/**,mypackage/p2/**"
    ???????? excludes="mypackage/p1/testpackage/**"
    ???????? classpath="xyz.jar"
    ???????? debug="on"
    ? />
    編譯 ${src} ${src2} 目錄及其子目錄下的所有。 Java 文件,但是 package/p1/**,mypackage/p2/** 將被編譯,而 mypackage/p1/testpackage/** 將不會(huì)被編譯。 Class 文件將放在 $ build }指定的目錄下, classpath 表示需要用到的類文件或者目錄, debug 設(shè)置為 on 表示輸出 debug 信息
    3. <property name="classpath" value=".;./xml-apis.jar;../lib/xbean.jar;./easypo.jar"/>

    <javac srcdir="${src}"
    ???????? destdir="${src}"
    classpath="${classpath}"
    debug="on"
    />
    路徑是在 property 中定義的
    4.2.2 java
    n
    執(zhí)行指定的 java
    n
    例子:
    1. <java classname="test.Main">
    ???????? <classpath>
    ?????????? <pathelement location="dist/test.jar"/>
    ?????????? <pathelement path="${java.class.path}"/>
    ???????? </classpath>
    ?????? </java>
    classname
    中指定要執(zhí)行的類, classpath 設(shè)定要使用的環(huán)境變量
    2. <path id="project.class.path">
    ??? <pathelement location="lib/"/>
    ??? <pathelement path="${java.class.path}/"/>
    ??? <pathelement path="${additional.path}"/>
    ? </path>

    ? <target ... >
    ??? <rmic ...>
    ????? <classpath refid="project.class.path"/>
    ??? </rmic>
    ? </target>

    ================================================================

    ?????????????????????????????????????? Ant 全攻略 ? --???? 通過(guò) JDBC 執(zhí)行 SQL 語(yǔ)句

    4.5
    執(zhí)行 SQL 語(yǔ)句

    n
    通過(guò) jdbc 執(zhí)行 SQL 語(yǔ)句
    n
    例子:
    1. <sql
    ??? driver="org.gjt.mm.mysql.Driver"
    ??? url="jdbc:mysql://localhost:3306/mydb"
    ??? userid="root"
    ??? password="root"
    ??? src="data.sql"
    />
    2. <sql
    ??? driver="org.database.jdbcDriver"
    ??? url="jdbc:database-url"
    ??? userid="sa"
    ??? password="pass"
    ??? src="data.sql"
    ??? rdbms="oracle"
    ??? version="8.1."
    ??? >
    </sql>
    只有在 oracle 、版本是 8.1 的時(shí)候才執(zhí)行

    ================================================================
    ??????????????????????????????????????? Ant
    全攻略之 ? --- ? 發(fā)送郵件

    4.6
    發(fā)送郵件
    n
    使用 SMTP 服務(wù)器發(fā)送郵件
    n
    例子:
    <mail mailhost="smtp.myisp.com" mailport="1025" subject="Test build">
    ? <from address="me@myisp.com"/>
    ? <to address="all@xyz.com"/>
    ? <message>The ${buildname} nightly build has completed</message>
    ? <fileset dir="dist">
    ??? <includes name="**/*.zip"/>
    ? </fileset>
    </mail>
    l mailhost
    SMTP 服務(wù)器地址
    l mailport
    服務(wù)器端口
    l subject
    ? 主題
    l from
    ??? 發(fā)送人地址
    l to
    ????? 接受人地址
    l message
    發(fā)送的消息
    l fileset
    ? 設(shè)置附件

    posted on 2006-12-31 11:37 junky 閱讀(346) 評(píng)論(0)  編輯  收藏 所屬分類: ant


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲第一网站免费视频| 亚洲成年人电影在线观看| 亚洲国产精品一区二区久| 日韩亚洲人成在线综合| 久久久久久免费一区二区三区| 亚洲精品无码mⅴ在线观看| 一区二区三区视频免费观看| 19禁啪啪无遮挡免费网站| 又黄又爽无遮挡免费视频| 亚洲欧洲免费视频| 亚洲av无码专区在线观看亚 | 亚洲国产精品成人AV在线| 成年免费a级毛片免费看无码| 免费AA片少妇人AA片直播| 99精品全国免费观看视频| 国产亚洲人成网站在线观看 | 亚洲精品资源在线| 一本久久免费视频| 无码少妇一区二区浪潮免费| 亚洲精品无码午夜福利中文字幕 | 日本黄色动图免费在线观看| 国产成人免费在线| 国产亚洲精品激情都市| 亚洲午夜精品一区二区麻豆 | 野花香高清视频在线观看免费 | 国产精品免费视频一区| 亚洲码在线中文在线观看| 中文字幕的电影免费网站| 日本黄页网站免费| 亚洲国产成人91精品| 国产日韩AV免费无码一区二区| 日本高清免费网站| 亚洲AV无码久久久久网站蜜桃| 免费黄网站在线观看| 亚洲精品乱码久久久久久不卡| 亚洲伊人久久大香线蕉AV| 1000部禁片黄的免费看| 亚洲va国产va天堂va久久| 亚洲人成网站看在线播放| 免费人成动漫在线播放r18| 免费无码毛片一区二区APP|