欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Ant簡(jiǎn)介
Ant 是一個(gè)純Java工具,所以,要運行它,首先需要安裝一個(gè)Java虛擬機(JVM)。你可能已經(jīng)安裝了一個(gè)JVM,但是如果還沒(méi)有,你可以從 http://java.sun.com/j2se/1.4/download.html 上面免費下載一個(gè)。然后,從 http://www.apache.org/dist/jakarta/jakarta-ant/release/v1.4.1/bin/ 下載Ant的二進(jìn)制版本。將Ant壓縮文檔unzip或者untar(取決于你的系統平臺)到你選擇的安裝目錄(Windows下面通常是c:\Ant,UNIX下面通常是/usr/local/ant)。

    在軟件安裝完成之后,必須指示你的系統去找到這兩個(gè)目錄來(lái)啟動(dòng)那些應用程序。通過(guò)將這兩個(gè)工具的bin目錄放置到你的PATH環(huán)境變量中做到這一點(diǎn)。此外,你應該定義JAVA_HOME和ANT_HOME環(huán)境變量來(lái)讓那些工具了解它們的位置。

如果你用的系統是Windows,那么你需要在autoexec.bat文件中加入以下數行語(yǔ)句:

set JAVA_HOME=<JAVA_HOME>
set ANT_HOME=<ANT_HOME>
set PATH=%PATH%;<JAVA_HOME>\bin;<ANT_HOME>\bin

      重啟機器以完成安裝。如果系統報告說(shuō)傳遞了太多的參數到SET命令,那么可能是PATH中包含了空格。要解決這個(gè)問(wèn)題,就在一個(gè)單一行中定義PATH,并且將它用雙引號引起來(lái)。

      如果你的系統是UNIX并且正在使用Bash外殼,在~/.bash_profile文件中加入以下數行:

JAVA_HOME=<JAVA_HOME>
ANT_HOME=<ANT_HOME>
PATH=$PATH:<JAVA_HOME>/bin:<ANT_HOME>/bin
export JAVA_HOME ANT_HOME PATH

    運用其他外殼的用戶(hù)應該改寫(xiě)這段腳本并且編輯合適的配置文件。為更新系統環(huán)境,輸入.~/.bash_profile。為測試是否成功安裝,在終端窗口輸入java 和ant 命令。系統會(huì )發(fā)現這些命令并運行之。

    Ant像Make一樣工作。進(jìn)入要運行的buildfile(其缺省的名字為build.xml)所在的目錄,然后輸入ant。要運行另外一個(gè)目錄中的buildfile或者名字不是build.xml的buildfile,需要使用-buildfile參數。Ant也可以通過(guò)使用-find參數在文件系統中遞歸地找到所需的buildfile,因此可以從工程中的任意地方啟動(dòng)Ant。要顯示關(guān)于命令行ant參數的幫助,請輸入 ant -help。

Ant簡(jiǎn)介

作者:Michel Casabianca

本文講述如何使用這個(gè)具有極大價(jià)值的工具(Ant)來(lái)構建和部署Java工程。

    Ant是一個(gè)用于簡(jiǎn)單或復雜Java工程的自動(dòng)化構建、部署工具,它對于那些具有分布式開(kāi)發(fā)團隊或者相信通過(guò)頻繁的構建來(lái)進(jìn)行不間斷集成的公司尤其有用。對于那些建立傳統全Java應用程序以及那些使用HTML、JSP和Java servlets創(chuàng )建Web應用程序的公司來(lái)說(shuō),Ant極具價(jià)值。無(wú)論你的Java開(kāi)發(fā)者使用什么操作系統、集成開(kāi)發(fā)環(huán)境或者構建環(huán)境,Ant都可以將你的工程集合在一起,用于那些重要的構建。Ant也能夠自動(dòng)化并且同步文檔部署,這通常發(fā)生在軟件開(kāi)發(fā)過(guò)程中的沒(méi)有正式文檔和文檔比較混亂的部分。

    在構建和部署Java應用程序的時(shí)候,Ant處理著(zhù)大量有用的任務(wù)。最基本的任務(wù)包括添加和移除目錄、使用FTP拷貝和下載文件、創(chuàng )建JAR和ZIP文件以及創(chuàng )建文檔。更高級的特性包括用源代碼控制系統諸如CVS或者SourceSafe來(lái)檢查源代碼、執行SQL查詢(xún)或腳本、將XML文件轉換為人能識別的HTML,以及為遠程方法調用生成stub(存根)文件。

   Ant和Make(非常著(zhù)名的構建工具,很多C語(yǔ)言開(kāi)發(fā)人員都使用它)之間有什么不同?Ant是為Java而創(chuàng )建,帶有屬于其自身的、獨特的范例,具有可移植性。而Make依賴(lài)于固定的操作系統命令(因此一個(gè)運行在微軟Windows下的Make文件對于使用UNIX的開(kāi)發(fā)者來(lái)說(shuō)毫無(wú)用處),利用Ant構建的純Java工程是可移植的,因為Ant本身就是用Java編寫(xiě)的,并且Ant bulidfiles使用XML語(yǔ)法。

本文將向你展示一個(gè)典型的Ant文件,它使用了很多的Ant基本任務(wù)。

一個(gè)典型的Ant工程

    Ant使用用XML編寫(xiě)的、稱(chēng)作bulidfile的工具來(lái)開(kāi)展它的工作。讓我們考慮一個(gè)源文件在src目錄中、類(lèi)庫(包括JAR文件)在lib目錄中、API文檔在doc/api目錄中的典型Java工程。我們可以利用如下的Ant buildfile來(lái)構建這個(gè)工程。

<?xml version="1.0"?><project name="typical" default="all" basedir="."> <property name="name" value="typical"/> <property name="src" value="src"/> <property name="lib" value="lib"/> <property name="api" value="doc/api"/> <property name="tmp" value="tmp"/> <property name="classpath" value="${lib}/${name}.jar"/> <property name="main" value="test.Main"/> <target name="bin"         description="Compile Java source files">  <javac srcdir="${src}"         destdir="${tmp}"         debug="on"         deprecation="on"/> </target> <target name="jar" depends="bin"         description="Build jar file">  <jar jarfile="${lib}/${name}.jar"       basedir="${tmp}"/> </target> <target name="run" depends="jar"         description="Run the program">  <java classname="${main}"        classpath="${classpath}"/> </target> <target name="api"         description="Generate API documentation">  <javadoc sourcepath="${src}"           destdir="${api}"           packagenames="test.*"/> </target> <target name="clean"         description="Clean generated files">  <delete dir="${tmp}"/>  <mkdir dir="${tmp}"/> </target> <target name="all" depends="clean,jar,api"/></project>                  

也許這里的語(yǔ)法看起來(lái)非常冗長(cháng)(你可以使用Make寫(xiě)一個(gè)短的多的buildfile),但是Ant buildfile的優(yōu)點(diǎn)是其可讀性好。

    buildfile的內容被包含在元素中。工程一般有一套工程屬性,帶有一些區--由一些Ant任務(wù)諸如編譯源代碼、生成目錄和生成JAR文件等組成。

    工程和屬性。在 元素下面首先可以找到屬性。這些屬性元素類(lèi)似于變量。你通??梢园凑杖蝿?wù)在工程內的任何地方使用屬性值,這些任務(wù)是通過(guò)使用表達式 $ {屬性名(property-name)} 在< target> 元素中定義的。舉例來(lái)說(shuō),在上述的buildfile 例子中,值${src}會(huì )被解析成src,因為我們在屬性區中對它是如此定義的。在我們的buildfile中,我們使用${src}屬性作為在javac任務(wù)中的srcdir的特性的值。

   當在命令行中用句法-Dproperty=value來(lái)調用Ant的時(shí)候,可能會(huì )定義或者重寫(xiě)屬性。比如說(shuō),如果你想將src的值設定為source-directory,你可以在命令行中鍵入ant DDsrc=sourc_directory。此外,屬性是恒定的,所以一旦被定義,就不能修改它們的值。

   目標和任務(wù)。目標(target)元素定義了一套指令來(lái)實(shí)現某類(lèi)工作??梢园阉鼈儽茸饔珊芏嗳蝿?wù)構成的程序函數(與編程指令相比)。舉例來(lái)說(shuō),在上述的buildfile例子中,名為jar的目標(具有屬性name=jar的元素)包含有一個(gè)單一的任務(wù)以從類(lèi)文件來(lái)生成JAR文件。這個(gè)例子中只是湊巧目標名稱(chēng)和任務(wù)名稱(chēng)相同,但是這個(gè)并不是必需的--目標元素名稱(chēng)是由創(chuàng )建者選擇的,但是任務(wù)名稱(chēng)是固定的,并且與那些定義在A(yíng)nt標記中引用的目標名相匹配。這個(gè)特殊的目標(我們的目標)依賴(lài)于bin 目標(比如說(shuō),depends=bin),這意味著(zhù)如果目標 jar被調用,那么它就會(huì )首先調用bin目標(如果bin目標還沒(méi)有被執行)。當調用Ant時(shí),你可以傳遞一個(gè)目標在命令行上運行。比如說(shuō),通過(guò)在命令行輸入命令ant jar調用Ant,可以運行目標jar。如果不指定一個(gè)目標而調用Ant,在工程的默認屬性中指定的目標就會(huì )被運行(在本例中,是"all"目標)。你也可以通過(guò)用空格分隔目標的辦法來(lái)調用帶有多個(gè)目標的Ant。

目標及其任務(wù)

  如前所述,Ant bulidfile是一個(gè)處理工程構建或部署給定階段的目標的集合。在這里我將描述在我們的示例buildfile中使用到的目標,并詳細說(shuō)明在使用這些目標及其相關(guān)的任務(wù)的時(shí)候會(huì )碰到的一些常見(jiàn)問(wèn)題。你可以根據自身的需要快速地定制這里所展示的bulidfile。以下的例子描述了這些通過(guò)使用我們的Ant bulidfile完成這些工作的步驟:

1. 編譯Java源文件
2. 創(chuàng )建JAR文件
3. 運行程序
4. 生成API文檔
5. 清除生成的class(類(lèi))文件

1. 編譯Java源文件

這個(gè)目標的使用可能是最廣泛的。通常由以下代碼來(lái)實(shí)現:

<target name="bin" description="Compile Java source files">  <javac srcdir="${src}"         destdir="${tmp}"         debug="on"         deprecation="on"/> </target>                  

     這個(gè)目標包括一個(gè)單一的javac任務(wù),這個(gè)任務(wù)就是編譯Java源文件。在上面的這個(gè)例子中使用的屬性非常簡(jiǎn)單明了:srcdir是存放源文件的目錄,destdir是存放所生成的類(lèi)文件的目錄。最后兩個(gè)屬性是用于javac編譯選項的。注意到optimize屬性(這里沒(méi)有使用)沒(méi)有什么用,所以最新的Java編譯器沒(méi)有將該屬性放入其中。當需要類(lèi)庫進(jìn)行編譯時(shí),你應該添加一個(gè)classpath(類(lèi)路徑)屬性以便在其中列出JAR文件或者目錄??梢栽赨NIX或者Windows系統下面寫(xiě)一個(gè)Ant路徑,其中使用冒號或者分號作為路徑的分隔標記,使用斜線(xiàn)或者反斜線(xiàn)作為文件的分隔標記。這樣,定義為lib/foo.jar:lib/bar.jar的classpath在UNIX下不用修改就可以直接使用,而在Windows下就會(huì )被自動(dòng)轉換成lib\foo.jar;lib\bar.jar。

   這個(gè)任務(wù)力圖使用與JDK一起提供的編譯器。該編譯器是帶有其自有類(lèi)的 Java程序,其自有類(lèi)存在于tools.jar文件中(該文件位于lib目錄中)。這樣,tools.jar文件必須在classpath中被指定。在很多操作系統中(包括Solaris和Linux),這個(gè)不成其為問(wèn)題,在使用javac任務(wù)時(shí),如果Ant不能使用這個(gè)標準編譯器的話(huà),它就會(huì )抗議。為了解決該問(wèn)題,只要簡(jiǎn)單地將lib/tools.jar文件與jre/lib/ext/tools.jar做一個(gè)鏈接就可以了。

2. 創(chuàng )建一個(gè)JAR文件

這個(gè)任務(wù)從Java類(lèi)(以及諸如圖片或者本地文件等其他資源)生成一個(gè)JAR文件。在我們的示例buildfile中,通過(guò)如下代碼實(shí)現:

<target name="jar" depends="bin"         description="Build jar file">  <jar jarfile="${lib}/${name}.jar" basedir="${tmp}"/> </target>                  

     jar元素的屬性非常明顯。當你想要包括文檔庫中的其他文件時(shí),你可以在任務(wù)中放置fileset元素。如同它們的名字所暗示的那樣,那些元素(并不是任務(wù)本身)定義了一系列的文件。讓我們設想一下,如果你想要引入一些位于img目錄中的PNG(Portable Network Graphics)格式的圖片文件,你應該編寫(xiě)如下代碼:

<target name="jar" depends="bin"        description="Build jar file"> <jar jarfile="${lib}/${name}.jar"      basedir="${tmp}">  <fileset dir="img" includes="*.png"/> </jar></target>                  

   dir屬性指出了文件的基本目錄;而includes包含了一個(gè)表達式,該表達式定義了一些文件以包括在fileset中。那些表達式有一個(gè)與shell命令非常接近的句法,"*"字符匹配零個(gè)或者多個(gè)字符而"?"只匹配一個(gè)字符。你可以在目錄樹(shù)中(包括零)使用表達式"**"來(lái)替代任意數目的目錄。比如說(shuō),如果在上述的例子中要包括的圖片位于img的任意一個(gè)子目錄中,那么應該在jar元素中放置如下所示的fileset:

<fileset dir="img" includes="**/*.png"/>                   

    也可以使用excludes屬性把文件從fileset中排除。比如說(shuō),要包括在img目錄中的除了.ida類(lèi)型的所有其他文件,那么可以按照如下方式編寫(xiě)fileset:

<fileset dir="img" excludes="**/*.dia"/>                      

    缺省情況下,某些文件是被所有的fileset排除在外的,這些文件是編輯器生成的備份文件(例如UNIX下的**/*~文件)和版本控制目錄(例如**/CVS/*)。如果要告訴Ant你不想排除那些文件,那么就需要在fileset元素中加入屬性defaultexcludes="false"。

Ant也可以處理用于打包Web應用程序的WAR文件和用于更復雜應用程序的EAR文件,這些復雜的應用程序經(jīng)常結合使用JSP、Servlets和EJB。Ant有專(zhuān)門(mén)的任務(wù)來(lái)生成WAR和EAR文件。那些任務(wù)是JAR任務(wù)的擴展,定義了新的嵌套元素和屬性。WAR任務(wù)定義了、、等嵌套元素,這些元素定義特別的fileset的元素。包括在那些fileset中的文件將在文檔庫的WEB-INF/lib、WEB-INF/classes和WEB-INF以及META-INF目錄中結束。同時(shí),它也為該文檔(WEB-INF/web.xml)的部署描述符定義webxml屬性。

EAR任務(wù)使用元素來(lái)將文件放入文檔的META-INF目錄,將appxml屬性用于部署描述符(META-INF/application.xml)。

3. 運行程序

為運行Java應用程序,需要使用java任務(wù),如下面的代碼所示:

<target name="run" depends="jar"         description="Run the program">  <java classname="${main}"        classpath="${classpath}"/> </target>                  

classname定義了包括main()方法運行程序的打包的類(lèi)的名稱(chēng),classpath包含了運行它的類(lèi)路徑??梢允褂们短椎腶rg元素傳遞命令行參數,或者通過(guò)嵌套sysproperty元素定義系統屬性。這兩種動(dòng)作執行起來(lái)都會(huì )非???,因為缺省情況下,該程序運行在運行Ant的虛擬機(可以使用fork屬性讓Ant啟動(dòng)一個(gè)新的虛擬機)上。

元素中,通過(guò)使用classpath屬性指定了類(lèi)路徑。用或者子元素(subelement)嵌套也是可以的。比如說(shuō),要在lib目錄下包括在classpath屬性中的條目、目錄類(lèi)以及所有的JAR文件,可以編寫(xiě)如下代碼:

<java classname="${main}"> <classpath>    <pathelement path="${classpath}"/>    <pathelement location="classes"/>    <fileset dir="lib" includes="*.jar"/>   </classpath>  </java>                  

如果要重用一個(gè)路徑,我們可以在元素中定義它及其ID,并且在元素引用它們。舉例來(lái)說(shuō),如果我們想重用在上面定義的路徑,可以按照如下所示編寫(xiě)代碼:

	 <path id="run.path">	   <pathelement path="${classpath}"/>	   <pathelement location="classes"/>	   <fileset dir="lib" includes="*.jar"/>	 	 </path>                  

4. 生成API文檔

這里的目標是通過(guò)使用javadoc生成API文檔。大體說(shuō)來(lái),這是由一個(gè)單一javadoc任務(wù)構成的簡(jiǎn)易目標,代碼如下:

  <target name="api"         description="Generate API documentation">    <javadoc sourcepath="${src}"           destdir="${api}"           packagenames="test.*"/>   </target>                  

sourcepath和destdi是顯而易見(jiàn)的屬性。packagenames屬性是一個(gè)以逗號分隔的、提供文檔的包列表。雖然Java的import語(yǔ)句不是遞歸的,但是packagenames屬性卻是遞歸的。這意味著(zhù)語(yǔ)句packagenames="test.*"可以為test包、test.foo包和test.foo.bar包提供文檔,但是不會(huì )為foo或者foo.test包提供文檔。

可以使用windowtitle、doctitle、header、footer和bottom這些包含HTML代碼的屬性定義窗口和文檔的標題以及所生成頁(yè)面的頁(yè)眉、頁(yè)腳和底行。注意:應該用相應的XML實(shí)體(< 和")來(lái)代替XML格式字符(< 和 ")。也可以用link屬性為文檔鏈接指定一個(gè)URL。我們會(huì )說(shuō)你用String參數編寫(xiě)了一個(gè)方法。對于一個(gè)生成的不帶有link屬性的文檔,在方法文檔中你就只有一個(gè)純文本java.lang.String。當使用一個(gè)合適的link屬性時(shí),這將顯示為一個(gè)到Sun的java.lang.String類(lèi)的文檔的鏈接。

5. 清除生成的類(lèi)文件

該目標清除生成的類(lèi)文件。比如說(shuō),要清除在tmp子目錄中的類(lèi)文件(以及其他資源),可以編寫(xiě)如下代碼:

<target name="clean"         description="Clean generated files">  <delete dir="${tmp}"/>  <mkdir dir="${tmp}"/> </target>                  

清除類(lèi)文件總是一個(gè)很好的主意,因為它可以在將來(lái)的編譯中避免錯誤的相關(guān)性問(wèn)題。假設你在類(lèi)A中定義了一個(gè)常量foo,并且在類(lèi)B中使用它。當你編譯這些Java源文件的時(shí)候,foo的值被嵌入在B的類(lèi)文件中。如果你修改foo的值,并且重新編譯(沒(méi)有刪除類(lèi)文件),javac任務(wù)就不會(huì )編譯類(lèi)B,因為它的源文件比相應的類(lèi)要舊,因此舊的值將保持不變。即便用javac使用depend屬性也不能解決這個(gè)問(wèn)題,因為Java編譯器的這個(gè)選擇是一種錯誤。Jikes的相關(guān)性檢查較好,但是你應該重新構建所有的類(lèi)文件,這樣才是最快的辦法。

當你在HTML中用樣式表時(shí)會(huì )遇到類(lèi)似的問(wèn)題。style任務(wù)不檢查要使用樣式表的日期。這樣的話(huà),如果你對那些文件進(jìn)行操作,該任務(wù)將不會(huì )生成目標文件(通常是HTML文件)。你可以通過(guò)使用force屬性來(lái)強制性地生成文件,但是這樣通常是效率極低的。在這種情況下,通過(guò)下面的clean目標可以刪除所生成的HTML文件(在doc屬性目錄中):

 <target name="clean">   <delete dir="${tmp}"/>   <mkdir dir="${tmp}"/>   <delete><fileset dir="${doc}" includes="*.html"/></delete> </target>                  

為解決這些相關(guān)性問(wèn)題,當你生成新版本的文件時(shí),應該不時(shí)地運行clean目標。

接下來(lái):

在第二部分,我們將討論一些更高級的Ant任務(wù),諸如從源代碼控制系統中檢查文件、用標記操縱數據庫、用JUnit運行unit測試、部署工程以供測試或者部署生產(chǎn)服務(wù)器等。

Michel Casabianca (casa@sweetohm.net) 是In-Fusio的軟件工程師。In-Fusio是一家為移動(dòng)用戶(hù)提供游戲服務(wù)的法國公司。同時(shí),Michel Casabianca還是"XML Pocket Reference"一書(shū)(O‘Reilly出版, 2001年)的合著(zhù)者。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
ant實(shí)踐
ant 使用指南
ANT從入門(mén)到提高
Java基礎系列之三:Apache Ant入門(mén)示例
ant實(shí)踐——3、運行ANT
Sun技術(shù)社區 - Java,Solaris,SunONE,JES,StarSuite技術(shù)論壇 - Ant應用2
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久