小石頭
          Excellence in any department can be attained only by the labor of a lifetime; it is not to be purchased at a lesser price.
          posts - 91,comments - 22,trackbacks - 0
          <2007年2月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728123
          45678910

          當我們大喊一聲“不!我要這樣走!”時,我們就成熟了。

          常用鏈接

          留言簿(10)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          Blogger's

          Java站點

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          Attempting to download spring-core-1.1.4.jar.266K downloadedAttempting to download spring-web-1.1.4.jar.111K downloaded
            
            圖1-1顯示了jar目標觸發(fā)的一系列事件:
            
            1.Maven查看POM,依據(jù)project.xml的定義,看到在springframework組中的兩個人造物的依賴關(guān)系。它將載你本地Maven的資源庫中檢查spring-core-1.1.4.jar和spring-web-1.1.4.jar。
            
            2.當Maven找不到這些文件,它將到http://www.ibiblio.org/maven/springframework/jars/尋找JAR文件。這些JAR文件會被下載并放置于你本地Maven的資源庫中。它們也被添加到你項目的classpath中。下次在你的項目查詢這些文件時,Maven將在你本地的資源庫中提供它們。
            
           

            
          圖1-1.Maven本地和遠程資源庫為test application項目提供的spring Jar

            
            剛剛發(fā)生了什么?
            
            Maven為你節(jié)省了相當?shù)臅r間和不必要的麻煩。Maven到來之前,依賴關(guān)系常常被捆綁到一個項目的目錄或者項目應(yīng)該指向到添加正確的JAR到你的classpath。使用Maven管理依賴關(guān)系顯然有著明顯的優(yōu)勢;作為初學者,如果你的項目依賴30個外部的JAR文件,這就不需要在你的資源庫中存儲成兆的JAR文件。這意味著當你在項目的外部檢查資源控制的時候更少的存儲空間和更快的下載時間。另外,如果你有多個項目依賴相同的外部依賴,Maven僅需要下載一次依賴關(guān)系,并且每個項目引用一個單獨的副本在你本地的資源庫中。當依賴關(guān)系能夠從Maven資源庫遠程下載的時候,沒有強制的原因讓你存儲你項目的依賴關(guān)系的版本。
            
            當Maven下載依賴關(guān)系,其在你本地的機器上從遠程的Maven資源庫拷貝一個文件到你本地的Maven資源庫。Maven如何定位依賴關(guān)系的?它使用project.xml中dependency元素的信息,如圖1-2所示。
            
           

            
          圖1-2.POM和Maven資源庫的映射

            
            指定的groupId告訴Maven查看特定的目錄-springframework。指定type告訴Maven查找特定的子目錄如jar和war(注意s是Maven附加到type元素上的);本例中,type是被忽略的,JAR類型是默認類型。當你指定了artifactId,你正告訴Maven哪個文件將從jar目錄下載。頂級目錄表現(xiàn)為組標示符,JAR文件名的第一部分表現(xiàn)為artifact標示符,文件名最后的部分,包括擴展名表現(xiàn)為version標示符。Maven使用下面的公式來決定一個來自于資源庫中的依賴關(guān)系。[REPO_ROOT]參考你遠程的資源庫:
            
            [REPO_ROOT]/<groupId>/<type>s/<artifactId>-<currentVersion>.<type>
            
            提示
            
            Maven2.0的說明中,資源庫可能開始于類似Java包的結(jié)構(gòu)。作為springframework的替代,groupId被提議的結(jié)構(gòu)為org.springframework.另外,每個版本將有一個分隔目錄用以增加Maven資源庫的效率。更多有關(guān)改變的提交建議,參見http://docs.codehaus.org/display/ MAVEN/Repository+Layout+-+Final.
            
            一個本地的資源庫來處理依賴關(guān)系。在Unix機器上,你的Maven資源庫能在~/.maven/repository目錄找到,在Windows機器上,你的Maven的資源庫在你的%USERPROFILE%目錄。如果你看一看本地Maven的資源庫,你將會注意到它正包含一個springframework的目錄。%USERPROFILE%\.maven\repository\springframework\jars目錄包含spring-core依賴關(guān)系的兩個:spring-core-1.1.4.jar文件和spring-core-1.1.4.jar.md5文件,其包含MD5文件用于驗證sprint-core JAR文件的完整性。Maven 1當前并沒有使用MD5來驗證完成品的完整性,但在將來的版本可能會用其來驗證完成品的完整性。
            
            提示
            
            在Windows機器上,%USERPROFILE%通常決定于C:\D-ocuments and Settings\vmassol這種目錄。%USERPR-OFILE%被用在Unix的主目錄。(%USERPROFILE% isused in the spirit of the abbreviation for a Unix home directory.)
            
            關(guān)于......使用id元素?
            
            如果你工作在現(xiàn)存的Maven項目,你可能有依賴關(guān)系使用id元素。下面的dependencies元素示范了使用單獨id元素來附加Jakarta Commons Math的1.0版本:<;dependencies><;dependency><;id>commons-math<;/id><;version>1.0<;/version><;/dependency><;/dependencies>單獨使用id元素工作僅在groupId和artifactId匹配時,如果你瀏覽Maven資源庫,你將看到下面的目錄結(jié)構(gòu):
            
            /commons-math
            /jars
            commons-math-1.0.jar
            commons-math-1.1.jar
            
            使用id元素工作,單獨的id標記已經(jīng)不被贊成使用并在Maven 2中消失。當你看到別的Maven項目中使用dependencies的速記符號時,請嘗試使用groupId和artifactId來標識你的依賴關(guān)系。
            
            依賴快照
            
            如果你開發(fā)的程序依賴的依賴關(guān)系經(jīng)常改變,你可能想將依賴的每個依賴關(guān)系替代為最近構(gòu)件的硬編碼的版本。在一個項目依賴的依賴關(guān)系還處在beta的版本,或你正開發(fā)一系列項目依賴的Maven項目時時特別有用,這將在第3章論述。本實驗,你將學習到如何依靠快照。
            
            我該如何做?
            
            在你的依賴關(guān)系塊兒中指定一個明確的版本,使用SNAPSHOT關(guān)鍵字作為版本名稱的一部分。每次你執(zhí)行Maven目標時,Maven將從遠程資源庫中檢查較新的依賴關(guān)系。如果遠程資源庫的版本較新Maven將下載其到本地資源庫。例如:下面的依賴關(guān)系將一直下載spring的新版JAR文件。
            <dependency>
            <groupId>springframework
            </groupId>
            <artifactId>spring
            </artifactId>
            <version>1.2-SNAPSHOT
            </version>
            </dependency>
            
            剛剛發(fā)生了什么?
            
            當你使用SNAPSHOT依賴關(guān)系,你正告訴Maven使用遠程資源庫的最新版本。在你使用多項目插件或者當你依賴的一個完成品尚處于開發(fā)階段這將得心應(yīng)手。在你工作的團隊僅有較少的開發(fā)者組成時,最好也常這么做。你將使用SNAPSHOT依賴關(guān)系當你的項目依賴一個最近的開發(fā)或者非正式版本的特別組件。SNAPSHOT依賴關(guān)系應(yīng)該在開發(fā)階段被保留,并且,概括說,你不用改發(fā)布一個依賴于SNAPSHOT依賴關(guān)系的項目。
            
            執(zhí)行脫機構(gòu)建
            
            如果你需要在一個離線的情況下使用Maven,你可能需要知道如何確使Maven不檢查最新的SNAPSHOT依賴關(guān)系。本實驗將向你展示如何用Maven執(zhí)行脫機構(gòu)建。
            
            我該如何做?
            
            這個方法很簡單:僅僅使用-o命令行選項。例如,如果你沒有網(wǎng)絡(luò)連接,但又想執(zhí)行測試目標,運行Maven -o test。Maven將執(zhí)行這個test目標而不檢查依賴關(guān)系。如果你的項目沒有依賴SNAPSHOT構(gòu)建,你也可以斷看你的環(huán)境來添加-o標志。如果你依賴SNAPSHOT構(gòu)建,你將需要使用-o標志,Maven將在每次執(zhí)行目標時嘗試檢查最新的SNAPSHOT。在這種情況下不使用-o標志本項目將不會構(gòu)建成功。
            
            關(guān)于...... 執(zhí)行離線構(gòu)建如果你不想下載任何完成品?
            
            當然,這將不會工作。離線構(gòu)建的工作,你必須已經(jīng)有必需的依賴關(guān)系在你本地的資源庫。項目最簡單的獲得Maven下載依賴
            
            關(guān)系的方法是在每個Maven項目實例簡單的運行“noop”目標,build:start。這個目標執(zhí)行之前任何其它的目標并不執(zhí)行任何動作。如果你運行build:start,Maven將從project.xml獲得獲取任何依賴關(guān)系。
            
            使用Maven控制臺
            
            如果你再三的從命令行運行Maven,你可以通過Maven控制臺來節(jié)省時間。Maven控制臺提供一個“外殼”,在這你可以鍵入目標的名稱來執(zhí)行Maven。通過使用Maven可以避免每次載你想運行一個Maven目標時Java Virtual Machine(JVM)啟動的等待。
            
            我該如何做?
            
            Maven Console是一個插件,你可以通過鍵入maven console在命令提示符。這將產(chǎn)生下面的輸出:
            __ __
            | \/ |__ _Apache__ ___
            | |\/| / _` \ V / -_) ' \ ~ intelligent projects ~
            |_| |_\__,_|\_/\___|_||_| v. 1.0.2The following commands are available:list - list all available goalshelp - this message<goalname> - attain a goalquit - quits the consoletest-application 1.0 >
            
            目前,你可以在命令行執(zhí)行任何你能執(zhí)行的目標。開始是一下;鍵入 java:compile。Maven將執(zhí)行 java:compile目標并返回提示符其它的目標。在一個序列中運行兩個目標,你可以在提示符處輸入它們,通過“空格”-例如, clean test。眾所周知作為“goal chaining”這是你想通過Maven獲得指定一系列目標的方法。退出Maven Console,鍵入quit,查看有效目標列表,鍵入list。
            
            剛剛發(fā)生了什么?
            
            在Maven Console下Maven執(zhí)行java:compile目標非常之快,不信么?當你使用Maven Console時你所執(zhí)行的目標是在一個現(xiàn)成的JVM下。當你從命令行運行Maven時,你每次運行一個目標都不得不等待JVM的啟動。如果你不確信其對性能的提升,自己試試看。在命令行下運行java:complie 10次,再在Maven Console下同樣運行java:compile 10次。注意時間的差別,你將發(fā)現(xiàn)JVM啟動的時間開始增加。如果你找到你自己常用的Maven目標,Maven Console將通過啟動JVM一次為來節(jié)省時間。
            
            生成Eclipse項目
            
            我打賭你一定想在IDE下工作。Maven通過插件來與Eclipse,InelliJ,IDEA,JBuilder,JDeveloper以及Emacs集成。Maven很好的與全部這些工作集成,本實驗關(guān)注
          請記住本文永久地址:
          http://www.javaresource.org/maven/maven-73941.html
          Maven起步――教你開始使用Maven二(圖)

          Java資源網(wǎng)收集整理,轉(zhuǎn)載請保留出處.
          posted on 2007-02-12 12:22 小石頭 閱讀(508) 評論(0)  編輯  收藏 所屬分類: maven、ant
          主站蜘蛛池模板: 祁阳县| 泰来县| 开原市| 梨树县| 鱼台县| 武城县| 镶黄旗| 赤壁市| 平湖市| 新津县| 若尔盖县| 洪湖市| 呈贡县| 斗六市| 莫力| 馆陶县| 隆化县| 垣曲县| 双江| 大港区| 皮山县| 靖边县| 平原县| 东宁县| 普格县| 德保县| 化德县| 德阳市| 赤城县| 德江县| 淳安县| 拉萨市| 营口市| 儋州市| 濮阳市| 拉孜县| 观塘区| 太仆寺旗| 江达县| 太原市| 宁都县|