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

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

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

    進(jìn)行中  
    。。。
    日歷
    <2006年9月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567
    統(tǒng)計
    • 隨筆 - 13
    • 文章 - 1
    • 評論 - 3
    • 引用 - 0

    導(dǎo)航

    常用鏈接

    留言簿(1)

    隨筆檔案

    文章檔案

    相冊

    link

    搜索

    •  

    最新隨筆

    最新評論

    閱讀排行榜

    評論排行榜

     
    ant
    讀書筆記——《Ant – The Definitive Guide,2nd Edition》 ???? 選擇自 hopson 的 Blog
    關(guān)鍵字 ? 讀書筆記——《Ant – The Definiive Guide,2nd Edition
    出處 ?

    第一章: Getting Started

    l ???????? Ant 默認(rèn)的構(gòu)建文件為 build.xml

    l ???????? Ant 構(gòu)建文件中的根 XML 元素為 project project 可用屬性為:

    Attribute

    Description

    Required

    name

    Defines the project name

    No

    default

    The target to invoke if no target is explicitly specified

    Yes

    basedir

    The base directory from which all relative paths are resolved

    No

    ?

    ?

    l ???????? Ant 工程 (project) 中由若干個構(gòu)建目標(biāo) (target) 組成,構(gòu)建目標(biāo)是一組相關(guān)任務(wù) (Tasks) 的集合,如編譯文件、創(chuàng)建目錄、打包等,構(gòu)建目標(biāo)之間可以建立依賴關(guān)系,構(gòu)建目標(biāo)執(zhí)行之前必須先執(zhí)行所有所依賴的構(gòu)建目標(biāo)。 Ant 工程通過 project default 屬性指定默認(rèn)的構(gòu)建目標(biāo)名稱。構(gòu)建目標(biāo)的 XML 元素為 target ,其可用的屬性為:

    Attribute

    Description

    Required

    name

    Defines the target name

    Yes

    depends

    Comma-separated list of targets to execute before this target

    No

    if

    Name of a property needed to run this task

    No

    unless

    Name of a property that can not be set before running this task

    No

    description

    Description of this target's purpose

    No

    ?

    ?

    l ???????? 構(gòu)建任務(wù) (Tasks) 是構(gòu)建目標(biāo) (target) 的基本組成部分,是 Ant 構(gòu)建的基本執(zhí)行單元。 Ant 中存在很多內(nèi)建的構(gòu)建任務(wù),如下表所示:

    Task Name

    Description

    ant

    Executes Ant

    antcall

    Executes a target from the current build file

    antstructure

    From a given build file, creates a DTD reflecting all of the tasks Ant currently knows about

    apply [execon]

    Invokes a native executable

    available

    Sets a Boolean value in a property according to the availability of desired resource

    basename

    Sets a property to the last element of a specified path in an effort to determine a file's name without directory structure

    buildnumber

    Manages build numbers

    bunzip2

    Expands GZip or BZip2 archives

    bzip2

    Packs GZip or BZip2 archives

    checksum

    Creates checksums for one or more files

    chmod

    Modifies file permissions on Unix

    concat

    Concatenates multiple files

    condition

    Checks the result of a condition and sets the result to in a property

    copy [copydir, copyfile]

    Copies files

    cvs

    Interacts with a CVS repository

    cvschangelog

    Converts a series of CVS change logs into an XML report

    cvspass

    Adds entries to a .cvspass file

    cvstagdiff

    Creates an XML report highlighting the differences between tags

    cvsversion

    Finds the CVS software version

    defaultexcludes

    Modifies the list of default exclude patterns, affecting which files are automatically excluded from processing by file-related tasks

    delete [deltree]

    Delete files and folders

    dependset

    Deletes target files that are older than new source files

    dirname

    Assigns a file's directory path to a property

    ear

    Extends the jar task to support handling files for an Enterprise Application archive (EAR)

    echo

    Echoes text to System.out or to a file

    exec

    Invokes a native executable

    fail

    Halts and exits a build by throwing a BuildException

    filter

    Sets a token filter that can be used by filter-related tasks such as copy

    fixcrlf

    Adds or remove tabs, carriage returns, linefeeds, and EOF characters from a set of files

    genkey

    Adds a new key to a given keystore

    get

    Retrieves files using FTP, HTTP, and more from a URL

    gunzip

    Unpacks a GZip file

    gzip

    Packs a GZip file

    import

    Allows the use of other Ant files

    input

    Displays a message and reads a line of input from the console, allowing for user input during the build process

    jar

    Creates a JAR archive similar to Java's jar command

    java

    Executes the Java interpreter to run a class or application

    javac

    Compiles the specified source file(s)

    javadoc [javadoc2]

    Invokes the javadoc tool to create documentation

    loadfile

    Sets a property file to the entire contents of a text file

    loadproperties

    Loans an entire property file into Ant properties

    macrodef

    Defines a new task as a macro built-up upon other tasks

    mail

    Sends SMTP mail messages

    manifest

    Creates an archive's manifest file

    mkdir

    Makes a new directory

    move [rename]

    Moves a file to another directory

    parallel

    Contains other Ant tasks that can be run simultaneously by multiple Java threads

    patch

    Uses the patch command (assuming it is on the path) to apply diff files to a source file (or files)

    pathconvert

    Converts paths between platforms

    presetdef

    Defines a new task based on an existing task with certain options preset as defaults

    property

    Sets one or more properties to new values

    record

    Runs a listener that records the logging output of the build process to a file

    replace

    Replaces a string with another in all files in a directory

    rmic

    Invokes the rmic compiler

    sequential

    A container task that can contain other Ant tasks and run them in sequence

    signjar

    Uses the JarSigner to securely sign ZIP and JAR archives

    sleep

    Suspends execution for a specified period of time

    sql

    Runs SQL statements against a database

    subant

    Runs Ant within all subdirectories of the project directory

    sync

    Synchronizes two directory trees

    tar

    Makes a new TAR archive

    taskdef

    Creates a new task definition and adds it to the current project

    tempfile

    Sets a temporary filename to an Ant property

    tstamp

    Sets time-based properties to the current time

    typedef

    Creates a new task or data type for use in the current project

    unjar

    Unpacks a JAR file

    untar

    Unpacks a TAR file

    unwar

    Unpacks a WAR file

    unzip

    Unpacks a ZIP file

    uptodate

    Sets a property value to true if a given target file is newer than a set of source files

    waitfor

    Halts a build and continues when specified conditions are met

    war

    Creates WAR archive files (an extension of the jar task)

    whichresource

    Locates a class or resource, either on the current class path or the system class path

    xmlproperty

    Loads Ant properties from an XML property file

    xslt [style]

    Transforms a set of documents via XSLT

    zip

    Creates and packs a new ZIP archive

    ?

    ?

    Ant 除了核心任務(wù) (Core Tasks) 之外還可以使用可選任務(wù),但使用可選任務(wù)時需要額外的 jar 庫文件的支持,這些庫文件需要存放在 Ant lib 目錄下。有了這些可選任務(wù) Ant 可以做更多的事情,如 ftp 、編譯 .Net 工程,使用 ClearCase 等。

    ?

    ?

    l ???????? 工程屬性 (properties) 是除了構(gòu)建目標(biāo) (target) 、構(gòu)建任務(wù) (tasks) 之外的另一個 Ant 支柱,工程屬性其實是一個名稱 - 值對,可以在構(gòu)建任務(wù)的 XML 元素中使用,使用方式為: ${property-name} 。工程屬性的 XML 元素為 property ,其可用的 XML 屬性為:

    Attribute

    Description

    Required

    classpath

    The classpath to use when looking for a resource.

    No

    classpathref

    The classpath to use when looking for a resource, which can then be given as a reference to a path element later in the build file.

    No

    environment

    The prefix to use when retrieving environment variables. For example, if you specify environment="env", you will be able to access operating-system-specific environment variables as property names like ${env.PATH}.

    A resource, file, url, or environment attribute is required when not using the name attribute.

    file

    The name of a property file to load values from.

    A resource, file, url, or environment attribute is required when not using the name attribute.

    location

    Sets the property to the absolute filename of the given file. If an absolute path is supplied, it's left unchanged (with / and \ characters converted for the current platforms). Otherwise, the supplied filename is taken as a path relative to the project's base directory and then expanded.

    A value, location, or refid element is required when using the name attribute.

    name

    The name of the property to set.

    No

    prefix

    The prefix to add to properties loaded from a file or a resource. A . is appended to the prefix if none is specified.

    No

    refid

    A reference to a (previously) defined object.

    A value, location, or refid element is required when using the name attribute.

    resource

    The resource name of the property file, used for searching the classpath.

    A resource, file, url, or environment attribute is required when not using the name attribute.

    url

    The URL from which to read properties.

    A resource, file, url, or environment attribute is required when not using the name attribute.

    value

    The value of this property.

    A value, location, or refid element is required when using the name attribute.

    ?

    ?

    l ???????? Ant 的內(nèi)建屬性:

    ant.file

    Contains the absolute path of the build file

    ant.java.version

    Contains the JVM version Ant is using (can hold only 1.1, 1.2, 1.3, 1.4 and [as of Ant 1.6] 1.5)

    ant.project.name

    Holds the name of the project that is executing (set with the name attribute of project)

    ant.version

    Contains the version of Ant running

    basedir

    Holds the absolute path of the project's base directory (set with the basedir attribute of project)

    l ???????? Ant 的運(yùn)行: ant [options] [target [target2 [target3] ...]] ,在 options 中可以指定要執(zhí)行的構(gòu)建文件,默認(rèn)為 build.xml ,如果構(gòu)建文件為 project.xml ,則相應(yīng)用 ant 命令為 : ant –f project.xml target 可以指定多個,之間用空格分隔,如果未指定則使用構(gòu)建文件中的默認(rèn)目標(biāo)。

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    第二章: Using Properties and Types

    l ???????? Condition 任務(wù)用于控制其他任務(wù)的執(zhí)行:在 Condition 任務(wù)中設(shè)置屬性值,而在其他任務(wù)中根據(jù)這些屬性值的內(nèi)容決定是否執(zhí)行,如:

    <condition property="all.set">

    ??? ????<and>

    ????? ????? <available file="file1.java"/>

    ????? ???????<available file="file2.java"/>

    ??? ????</and>

    </condition>

    這個任務(wù)用于判斷 file1.java file2.java 是否存在,如果都存在,則設(shè)置 all.set 屬性為 true ,否則為 false;

    除了示例中出現(xiàn)的 condition and 條件任務(wù)外還有 available or equals 等其他條件任務(wù)。

    l ???????? 在任務(wù)中添加 if unless 可以決定任務(wù)是否執(zhí)行,繼上例:

    														<target name="buildModule" if="all.set"/>
    												
    														
    																??????? . . .
    												
    														</target>
    												

    這個任務(wù)當(dāng) all.set true 時執(zhí)行,否則不執(zhí)行。

    l ???????? fail 任務(wù)用于中斷構(gòu)建,如:

    														
    																<fail message="Could not find all files." unless="all.set" />
    														
    												

    當(dāng) all.set false 時中斷構(gòu)建,并輸出 ” Could not find all files.”

    l ???????? 從文件裝入屬性: <property file="build.properties" />

    l ???????? 將文件內(nèi)容作為單個屬性裝入:

    <loadfile property="message" srcFile="message.txt"/>

    l ???????? 屬性可以設(shè)置多次,后頁的屬性會覆蓋前頁的屬性值。

    l ???????? 通過命令行設(shè)置屬性值:使用 -D 選項

    ant -Dmessage="Compiling and compressing"

    l ???????? 使用環(huán)境變量作為屬性值,如:

    <property environment="env" />

    加上這句以后可以使用如下方式獲取環(huán)境變量 JAVA_HOME 的值:

    ${env.JAVA_HOME} ,其他環(huán)境變量也通過類似方式獲得。

    l ???????? fileset 用于指定文件集,并設(shè)置到屬性中用于其他任務(wù)的構(gòu)建,如文件復(fù)制、編譯等, fileset 的示例如下:

    <fileset dir="${source}">

    ??? <include name="**/*.java"/>

    ??? <exclude name="**/*test*"/>

    </fileset>

    include 用于包含文件, exclude 用于排除文件,通配符 ** 表示當(dāng)前目錄或當(dāng)前目錄下的所有子目錄。除了使用 include exclude 之外還可以使用 filename 來指定加入文件集的特定文件,如:

    <fileset dir="${source}">

    ??? <filename name="**/*.java"/>

    ??? <filename name="test.cpp"/>

    </fileset>

    l ???????? 使用 fileset 的示例 :

    <copy todir="../dest">

    ??? <fileset dir="src">

    ??????? <exclude name="**/*.java"/>

    ??? </fileset>

    </copy>

    這個任務(wù)將 fileset 中的文件復(fù)制到 ../dest 目錄下

    l ???????? 相對于 fileset 還可以使用 dirset 表示目錄集,使用與 fileset 類同。

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    第三章: Building Java Code

    l ???????? javac 任務(wù)用于編譯 java 源代碼,如:

    <javac srcdir="${src}"

    ??? debug="on"

    ??? destdir="${bin}"

    ??? classpath="common.jar"

    />

    l ???????? input 任務(wù)可接收用戶輸入,如:

    <target name="init">

    ??? <input

    ??????? message="Deleting bin directory OK?"

    ??????? validargs="y,n"

    ??????? addproperty="do.delete"

    ??? />

    ??? <condition property="do.abort">

    ??????? <equals arg1="n" arg2="${do.delete}"/>

    ? ??</condition>

    ??? <fail if="do.abort">Build aborted.</fail>

    ??? <delete dir="${output}" />

    ??? <mkdir dir="${output}" />

    </target>

    l ???????? 在同一構(gòu)建文件中可以使用 antcall 任務(wù)執(zhí)行另一個構(gòu)建任務(wù),并可指定構(gòu)建參數(shù)作為構(gòu)建屬性,如:

    <target name="main" depends="init, compile, compress">

    ?? <antcall target="displayMessage">

    ?????? <param name="msg" value="${message}"/>

    ?? </antcall>

    </target>

    <target name="displayMessage">

    ??? <echo message="msg=${msg}"/>

    </target>

    在本例中 main 任務(wù)調(diào)用了 displayMessage 任務(wù),并設(shè)置 msg 參數(shù)作為調(diào)用屬性,在 displayMessage 任務(wù)中可以通過 ${msg} 獲取該屬性值。

    l ???????? 使用 ant 任務(wù)執(zhí)行另一 Ant 構(gòu)建文件,如:

    <ant antfile="subproject/subbuild.xml">

    ??? <property name="parameter" value="4096"/>

    ??? <property file="config/subproject/build.properties"/>

    </ant>

    本例中執(zhí)行了另一以 subproject/subbuild.xml 為構(gòu)建文件的 Ant 構(gòu)建,將指定了構(gòu)建的屬性值,除此之外還可指定構(gòu)建目標(biāo)等其他選項。

    l ???????? 使用 import 導(dǎo)入其他構(gòu)建文件的內(nèi)容,如:

    <import file="shared.xml"/>

    l ???????? 使用 javadoc 任務(wù)創(chuàng)建 java 文檔,如:

    <javadoc

    ???? sourcefiles="${src}/Project.java"

    ???? destdir="${docs}"

    ???? author="true"

    ???? version="true"

    ???? use="true"

    ???? windowtitle="Project API">

    ???? <doctitle><![CDATA[<h1>Project API</h1>]]></doctitle>

    ???? <bottom><![CDATA[<i>Copyright &#169; 2005</i>]]></bottom>

    </javadoc>

    l ???????? 使用 jar 任務(wù)創(chuàng)建 jar 包,如 :

    <jar destfile="${output}/Project.jar" basedir="${output}"

    ???? includes="*.class" >

    ???? <manifest>

    ???????? <attribute name="Author" value="${user.name}"/>

    ???????? <section name="Shared">

    ???????????? <attribute name="Title" value="Example"/>

    ???????????? <attribute name="Vendor" value="MegaAntCo"/>

    ???????? </section>

    ???????? <section name="Copyright">

    ???????????? <attribute name="Copy" value="(C) MegaAntCo 2005"/>

    ???????? </section>

    ???? </manifest>

    </jar>

    l ???????? 使用 buildnumber 任務(wù)讀取并創(chuàng)建構(gòu)建序號, buildnumber 從文件 ( 默認(rèn)為 build.number) 中讀取原構(gòu)建序號并存到 build.number 屬性中,在成功構(gòu)建后加 1 寫回到文件中。 Buildnumber file 屬性用于指定存放構(gòu)建序號的文件。

    l ???????? 使用 tstamp 任務(wù)設(shè)置時間屬性,有 3 個屬性被設(shè)置,分別為 DSTAMP ,格式為 yyyyMMdd” TSTAMP ,格式為 ”hhmm” TODAY ,格式為 ”MM dd yyyy” Tstamp 的子任務(wù) format 可以設(shè)置時間的格式,如:

    <tstamp>

    ?? <format property="timestamp" pattern="MM/dd/yyyy hh:mm:ss"/>

    </tstamp>

    ?

    ?

    ?

    ?

    第四章: Deploying Builds

    l ???????? 使用 tar 任務(wù)創(chuàng)建 tar 文件,如:

    <tar

    ???? destfile="${output}/Project.tar.gz"

    ???? basedir="${output}"

    ???? includes="*.class"

    ??? compression="gzip"/>

    l ???????? 刪除已存在的文件: <delete file="/lib/Project.jar"/>

    l ???????? 刪除已存在的目錄: <delete dir="${dist}"/>

    l ???????? 創(chuàng)建目錄: <mkdir dir="${dist}"/>

    l ???????? copy 任務(wù)用于復(fù)制文件或目錄。

    l ???????? move 任務(wù)用于移動文件或目錄。

    l ???????? 使用 ftp 發(fā)送或接收文件,如:

    <ftp server="xxx.xxx.xxx.xxx" binary="true" verbose="true"

    ??????????? userid="${name}" password="${password}"

    ?????????? remotedir="/cgi-bin" action=”send” >

    ??? <fileset dir="${output}">

    ?????? <exclude name="*.java"/>

    ?????? <exclude name="*.class"/>

    ?????? <exclude name="*.txt"/>

    ?? </fileset>

    </ftp>

    ftp action 包括: put, get, del, list, chmod, mkdir and rmdir

    l ???????? 使用 telnet ,如:

    <telnet userid="steven" password="let_me_in"

    ????????????????? server="xxx.xxx.xxx.xxx">

    ???? <read>/home/steven</read>

    ???? <write>ls</write>

    </telnet>

    l ???????? 使用 SSH ,如 :

    <sshexec host="xxx.xxx.xxx.xxx"

    ??? username="${name}"

    ??? password="${password}"

    ??? command="touch index.html"/>

    l ???????? 使用 email ,如:

    <mail mailhost="smtp.isp.com" mailport="1025" subject="New Build">

    ??? <from address="developer@isp.com"/>

    ??? <replyto address="developer@isp.com"/>

    ??? <to address="list@xyz.com"/>

    ??? <message>Here is the new build.</message>

    ??? <fileset dir="dist">

    ??????? <includes name="**/*.tar.gz"/>

    ??? </fileset>

    </mail>

    l ???????? 自動構(gòu)建:可以使用 Windows 的計劃任務(wù),或 Anthill 工具進(jìn)行自動構(gòu)建。

    ?

    ?

    ?

    ?

    ?

    ?

    第六章: Getting Source Code from CVS Repositories

    l ???????? 登入 (login)

    <cvspass

    ?????? cvsroot=":pserver:steven@STEVE:/home/steven/repository"

    ??????? password="opensesame" />

    l ???????? 檢出 (check out)

    <cvs package="GreetingApp" dest="${cvs.dir}" />

    l ???????? 更新 (update):

    <cvs dest="${cvs.dir}" command="update"/>

    l ???????? 提交 (commit):

    <cvs dest="${cvs.dir}/GreetingApp"

    command="commit -m 'New Version'"/>

    l ???????? 創(chuàng)建更新日志 (change log)

    <cvschangelog dir="${cvs.dir}/GreetingApp"

    ?????????? ???? destfile="changelog.xml" />

    ?

    ?

    ?

    ?

    第七章: Executing External Programs

    l ???????? 執(zhí)行 Java 代碼,如:

    <java jar="${bin}/connect.jar"

    ??? fork="true"

    ??? failonerror="true"

    ??? maxmemory="512m"

    ??? >

    ??? <arg value="-q"/>

    ??? <classpath>

    ???? ???<pathelement location="${bin}/connect.jar"/>

    ??????? <pathelement path="${java.class.path}"/>

    ??? </classpath>

    </java>

    l ???????? exec 任務(wù)用于執(zhí)行系統(tǒng)命令或外部程序,如:

    <exec dir="." executable="/bin/cpp.exe"

    ??????? failonerror="true">

    ??????????? <arg line="-c ${src}/*.cpp ${output}"/>

    </exec>

    l ???????? apply 任務(wù)執(zhí)行批處理, apply exec 的差別是 apply 接收 fileset ,這樣可以對多個文件或輸入執(zhí)行相同中的命令或程序。

    l ???????? parallel 可執(zhí)行多線程任務(wù)。

    posted on 2006-09-08 16:07 kongjia 閱讀(819) 評論(0)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
     
     
    Copyright © kongjia Powered by: 博客園 模板提供:滬江博客
    主站蜘蛛池模板: 日本人的色道www免费一区| 2020因为爱你带字幕免费观看全集 | 国产成人精品亚洲日本在线| 亚洲免费电影网站| 亚洲国产精品99久久久久久| 丰满妇女做a级毛片免费观看| 国产拍拍拍无码视频免费| 四虎在线免费视频| 亚洲AV无码专区日韩| 亚洲av网址在线观看| 亚洲国产高清在线精品一区 | 亚欧日韩毛片在线看免费网站| av无码国产在线看免费网站| 免费观看四虎精品国产永久| 亚洲va久久久噜噜噜久久男同| 亚洲 欧洲 视频 伦小说| 51午夜精品免费视频| 99爱在线精品免费观看| 亚洲最大福利视频网站| 亚洲久热无码av中文字幕| 免费一级毛片无毒不卡| 亚洲人成网亚洲欧洲无码久久| 亚洲国产视频一区| 8x8x华人永久免费视频| 亚洲国产精品综合久久一线 | 巨胸喷奶水视频www免费视频| 99久久99热精品免费观看国产| 国产成人精品免费视频大全五级| 亚洲日韩区在线电影| 日本黄页网址在线看免费不卡| 久久99国产乱子伦精品免费| 亚洲av无码不卡| 国产精品免费高清在线观看| 天堂亚洲免费视频| 亚洲激情黄色小说| 精品国产污污免费网站入口在线 | A级毛片高清免费视频在线播放| 大香人蕉免费视频75| 亚洲国产精品VA在线看黑人| 国产精品亚洲а∨天堂2021| 99re在线视频免费观看|