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

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

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

    小石頭
    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

    摘要:

    Maven1.0已經(jīng)歷了幾年的時(shí)間,并且作為Ant的替代品已被廣大的開發(fā)人員所接收,但它并沒有在很大程度使開發(fā)人員從Ant的build.xml文件中解脫出來。Maven1.0速度慢并且笨拙,使用起來的困難度并不亞于使用Ant的項(xiàng)目。事實(shí)上,它的核心是基于Ant實(shí)現(xiàn)的。在經(jīng)過了幾乎徹底的重寫后,Maven2.0誕生了。
    一個(gè)Java項(xiàng)目中最困難的地方就是如何著手啟動(dòng)它。在啟動(dòng)項(xiàng)目之前,我們必須配置好所有的邏輯關(guān)系。比如,Java源代碼應(yīng)該放在何處?單元測(cè)試應(yīng)該在何處進(jìn)行?依賴的jar包應(yīng)該如何放置?如何構(gòu)建項(xiàng)目,如何形成文檔,如何測(cè)試和部署項(xiàng)目?在這種情況下,開發(fā)人員不同的處理選擇將會(huì)影響項(xiàng)目的余下部分。您的選擇可能會(huì)使你陷入困境,也可能會(huì)在將來證明您是一位Java架構(gòu)大師。我們假定后者是我們奮斗的目標(biāo),接下來就進(jìn)入我們的正題。

    構(gòu)建一個(gè)Java項(xiàng)目可以使用很多工具,其中包括Ant。Ant作為一款具有革命性的工具,一直是眾多開發(fā)者使用工具中的首選,它能使開發(fā)人員擺脫使用大量make命令的苦海。對(duì)于那些不太熟悉make命令的人來說,他們有充足的理由來表明使用命令并不是構(gòu)建Java項(xiàng)目的最好工具,因?yàn)樗痪邆淦脚_(tái)獨(dú)立性并且不易使用。Ant的出現(xiàn)解決了以上的問題,它使用了一個(gè)平臺(tái)獨(dú)立的工具,該工具能夠解析XML配置文件,即build.xml。雖然Ant由于其諸多的優(yōu)點(diǎn)而備受歡迎,但它同樣有一些缺點(diǎn)。build.xml文件由于采用了極其簡短的描述方式,使得開發(fā)人員需要預(yù)先學(xué)習(xí)它的語法。雖然學(xué)習(xí)曲線不是很陡峭,但Java開發(fā)人員更應(yīng)該把時(shí)間放在開發(fā)上面。

    Maven是新一代的生力軍,它的境遇正好和幾年前的Ant十分類似。Maven1.0已經(jīng)歷了幾年的時(shí)間,并且作為Ant的替代品已被廣大的開發(fā)人員所接收,但它并沒有在很大程度使開發(fā)人員從Ant的build.xml文件中解脫出來。Maven1.0速度慢并且笨拙,使用起來的困難度并不亞于使用Ant的項(xiàng)目。事實(shí)上,它的核心是基于Ant實(shí)現(xiàn)的。在經(jīng)過了幾乎徹底的重寫后,Maven2.0誕生了。

    Maven2.0的優(yōu)點(diǎn)

    Maven2.0有許多很好功能,這些功能不僅僅是幫助您構(gòu)建項(xiàng)目。如果您剛剛開始啟動(dòng)一個(gè)Java項(xiàng)目,并且想使該項(xiàng)目快速地開展下去,Maven2.0能夠在幾分鐘內(nèi)達(dá)到您的要求。以下是Maven2.0的一些優(yōu)點(diǎn):
    --標(biāo)準(zhǔn)的項(xiàng)目布局和項(xiàng)目結(jié)構(gòu)生成器
    --標(biāo)準(zhǔn)的依賴管理機(jī)制
    --多項(xiàng)目支持
    --在開發(fā)者需要的時(shí)候及時(shí)地下載新的插件和功能部件
    --生成最新項(xiàng)目信息的網(wǎng)站
    --集成了源代碼控制軟件:CVS和Subversion

    以上列表展示的只是Maven2.0特點(diǎn)中的一小部分。但這足以使Maven2.0成為一個(gè)構(gòu)建管理系統(tǒng)可靠的選擇。既然我們已經(jīng)知道Maven是個(gè)什么東西了,接下來讓我們看看如何使用它。

    入門

    我們要做的第一件事情就是設(shè)置目錄結(jié)構(gòu),但這并不需要讓我們手動(dòng)設(shè)置,Maven會(huì)根據(jù)您開發(fā)的項(xiàng)目類型來為您做這件事。一旦您下載并解壓了最新發(fā)布的Maven 2.0,您應(yīng)該將Maven所在目錄下面的bin目錄添加到您的系統(tǒng)路徑下。您可以運(yùn)行命令mvn -version來測(cè)試您的安裝。

    既然已經(jīng)安裝上了工具,讓我們看看創(chuàng)建一個(gè)簡單的Java項(xiàng)目的例子。Maven使用原型來決定目錄結(jié)構(gòu)是如何展現(xiàn)的。Maven自帶了幾個(gè)內(nèi)建的原型,您也可以自定義原型。

    mvn archetype:create -DgroupId=com.oreilly -DartifactId=my-app

    您看,這就生成了我們的項(xiàng)目布局。
    my-app
    ----src
    ????----main
    ????????----java
    ?????????? ----com
    ?????????????? ----oreilly
    ????----test
    ????????----java
    ????????????----com
    ????????????????----oreilly

    對(duì),就這么簡單。這種目錄結(jié)構(gòu)可以通過創(chuàng)建一個(gè)新的原型來覆寫,但并不推薦這么做,因?yàn)镸aven的一個(gè)優(yōu)點(diǎn)就是使用標(biāo)準(zhǔn)的目錄結(jié)構(gòu)。該目錄結(jié)構(gòu)包含兩個(gè)源代碼樹,一個(gè)是Java應(yīng)用程序的源代碼,另一個(gè)是單元測(cè)試代碼。同時(shí)您也許會(huì)注意到,當(dāng)?shù)谝淮芜\(yùn)行Maven的時(shí)候,它會(huì)進(jìn)行一些下載工作。當(dāng)您開始調(diào)用工具時(shí),Maven會(huì)根據(jù)您使用的插件來更新自身的一些所需功能。Maven默認(rèn)會(huì)從Ibiblio存儲(chǔ)庫中得到更新。您可以在Maven安裝目錄下的conf目錄中,或者項(xiàng)目自身中修改Maven遠(yuǎn)程存儲(chǔ)庫的選擇。
    您會(huì)發(fā)現(xiàn)Maven在my-app目錄下創(chuàng)建了一個(gè)pom.xml文件。這是項(xiàng)目的最基本部分。pom.xml文件包含了一組指令,這些指令告訴Maven如何構(gòu)建項(xiàng)目和包含哪些其它的特殊指令(POM是“項(xiàng)目對(duì)象模型”的縮寫)。在默認(rèn)的情況下,Maven包含了JUnit的依賴以此來鼓勵(lì)單元測(cè)試。

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    ??xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    ??<modelVersion>4.0.0</modelVersion>
    ??<groupId>com.oreilly</groupId>
    ??<artifactId>my-app</artifactId>
    ??<packaging>jar</packaging>
    ??<version>1.0-SNAPSHOT</version>
    ??<name>Maven Quick Start Archetype</name>
    ??<url>http://maven.apache.org</url>
    ??<dependencies>
    ????<dependency>
    ??????<groupId>junit</groupId>
    ??????<artifactId>junit</artifactId>
    ??????<version>3.8.1</version>
    ??????<scope>test</scope>
    ????</dependency>
    ??</dependencies>
    </project>


    創(chuàng)建完項(xiàng)目后,我們可以往項(xiàng)目里添加代碼并使用Maven的所有全新技巧。注意以下命令必須在pom.xml文件所在的目錄中運(yùn)行。
    --mvn test:運(yùn)行應(yīng)用程序中的單元測(cè)試
    --mvn package:依據(jù)項(xiàng)目生成jar文件
    --mvn install:將項(xiàng)目的jar文件添加到庫中,&#61548;????????以備依賴此項(xiàng)目時(shí)使用
    --mvn site:生成項(xiàng)目相關(guān)信息的網(wǎng)站
    --mvn clean:清除目標(biāo)目錄中的生成結(jié)果
    --mvn eclipse:eclipse:生成Eclipse項(xiàng)目文件

    接下來我們看看稍微復(fù)雜點(diǎn)的地方,我們知道手動(dòng)開始一個(gè)Java web項(xiàng)目比手動(dòng)開始一個(gè)簡單的Java項(xiàng)目更耗時(shí),然而Maven的使用則能化難為易。下面的例子(實(shí)際上是一行命令)展現(xiàn)了項(xiàng)目結(jié)構(gòu)的構(gòu)造。
    mvn archetype:create -DgroupId=com.oreilly
    ????-DartifactId=Oreilly
    ????-DarchetypeArtifactId=maven-archetype-webapp


    生成的結(jié)果結(jié)構(gòu)如下所示:
    Oreilly
    ----src
    ????----main
    ????????----resources
    ????????----webapp
    ????????????----WEB-INF

    這一次,我們的項(xiàng)目由于支持了將包含在war文件中的web資源而設(shè)置有所不同。pom.xml文件中將包含一行來表明項(xiàng)目應(yīng)該被打包成war文件:<packaging>war</packaging>。現(xiàn)在就可以使用mvn package命令來生成war文件。不用擔(dān)心如何從WEB-INF/lib目錄中得到依賴項(xiàng),在依賴屬性值被設(shè)置成compile的情況下,Maven會(huì)自動(dòng)包含依賴項(xiàng)。也可以將以下代碼添加到pom.xml文件中來改變war文件的名稱:
    <build>
    ????<finalName>PromoteC</finalName>
    </build>


    依賴管理

    創(chuàng)建好項(xiàng)目結(jié)構(gòu),添加完一些代碼,測(cè)試并編譯好應(yīng)用程序后,接下來可以看看Maven是如何處理依賴關(guān)系的。為了給項(xiàng)目添加一個(gè)依賴項(xiàng),必須將此依賴項(xiàng)添加到pom.xml文件中。下次運(yùn)行Maven的時(shí)候,它將從Ibiblio存儲(chǔ)庫中得到這個(gè)依賴項(xiàng),并且將此依賴項(xiàng)添加到項(xiàng)目構(gòu)建路徑中。

    關(guān)于依賴的問題有幾個(gè)重要的事情值得注意。在寫這篇文章的時(shí)候,Maven中最大的麻煩之處就是不能從Maven存儲(chǔ)庫中獲取Sun的jar文件。這個(gè)問題歸因于Sun在其代碼中設(shè)置的許可證限制。解決這個(gè)問題的辦法有兩種,一種是下載這些代碼并將它們安裝在您本地的存儲(chǔ)庫中,另一種是做一個(gè)外部聲明,并將這個(gè)聲明指向文件系統(tǒng)中依賴項(xiàng)所在的位置。希望Sun能夠盡早地創(chuàng)建自己的存儲(chǔ)庫,盡管如此,Maven也會(huì)被升級(jí)來使之能夠下載這些資源,只是在下載之前它會(huì)提示用戶接受許可證協(xié)議。

    另外一個(gè)麻煩的地方就是有時(shí)候使用的最新的庫文件可能在遠(yuǎn)程存儲(chǔ)庫中不存在。另一種可能是由于無法訪問Internet,需要所有的依賴項(xiàng)都能在本地獲取。這些問題的最好解決方案就是將jar文件安裝到本地的存儲(chǔ)庫中。將本地的存儲(chǔ)庫放在一臺(tái)web服務(wù)器上也同樣是個(gè)便利之舉,這樣整個(gè)開發(fā)團(tuán)隊(duì)就能從此獲益,每個(gè)人都沒有必要去管理自己的存儲(chǔ)庫了。改變Maven的存儲(chǔ)庫路徑只需簡單地編輯其安裝目錄下conf文件夾下面的settings.xml文件即可。

    在Maven中使用依賴是簡單的。讓我們看看往上述pom.xml文件中添加一個(gè)依賴項(xiàng)的情況。我們雖然已經(jīng)使用了JUnit,但讓我們將功能強(qiáng)大的Quartz庫添加到項(xiàng)目中。Quartz是一款用純Java編寫的關(guān)于時(shí)間安排的開源項(xiàng)目,它是您時(shí)間安排需求方面的很好的選擇。
    <dependency>
    ?? <groupId>quartz</groupId>
    ?? <artifactId>quartz</artifactId>
    ?? <version>1.5.1</version>
    ?? <scope>compile</scope>
    </dependency>


    我們僅僅只需添加<dependencies>這個(gè)元素,Maven就能下載Quartz并將其作為項(xiàng)目中的一個(gè)依賴項(xiàng)。不用擔(dān)心Quartz的依賴項(xiàng),一個(gè)Maven的存儲(chǔ)庫將包含依賴項(xiàng)自身依賴的資源信息,當(dāng)Maven下載Quartz的時(shí)候,它自身的依賴資源也同樣會(huì)被下載。為了驗(yàn)證版本為1.5.1的Quartz存在于Ibiblio庫中,我們可以瀏覽Maven存儲(chǔ)庫。注意到scope參數(shù)的使用,它告訴了Maven依賴項(xiàng)在何種階段是所需的。在使用JUnit的情況下,我們?cè)O(shè)置scope參數(shù)的值為test來告訴Maven這個(gè)依賴項(xiàng)只是在測(cè)試階段所需的,而不是運(yùn)行時(shí)所需的資源。以下是scope參數(shù)值的說明:
    --compile:默認(rèn)值。表明是所有任務(wù)所需的資源
    --test:運(yùn)行所有的測(cè)試用例時(shí)所需資源
    --runtime:表明是運(yùn)行時(shí)所需資源
    --provided:JDK部分或應(yīng)用服務(wù)器的classpath所需的資源

    現(xiàn)在,如何處理那些麻煩的Sun的jar包和那些需要但卻不能在遠(yuǎn)程存儲(chǔ)庫中找到的jar包了?我們必須使用Maven來手動(dòng)將這些jar包安裝到本地的存儲(chǔ)庫中。不用擔(dān)心,這沒有聽上去那么困難。為了做個(gè)示例,我們將安裝Java Activation框架的jar包。首先我們必須從Sun的站點(diǎn)上下載此jar包,接著我們使用Maven將它導(dǎo)入本地的存儲(chǔ)庫中。您自己也可以按照Maven上傳資源指南中的指導(dǎo)將缺少的jar包安裝到Ibiblio中。
    mvn install:install-file -Dfile=activation.jar
    ????-DgroupId=javax.activation -DartifactId=activation
    ????-Dversion=1.0 -Dpackaging=jar


    現(xiàn)在,新的jar包就像其它的項(xiàng)目依賴項(xiàng)一樣安裝到了本地存儲(chǔ)庫中。在只需添加依賴聲明后,我們就已準(zhǔn)備就緒了。在添加jar包和聲明它們?yōu)橐蕾図?xiàng)時(shí),必須確保版本信息的正確性。版本的不匹配會(huì)導(dǎo)致Maven在尋找資源時(shí)的失敗。在導(dǎo)入Sun的jar包時(shí),如果您需要尋求標(biāo)準(zhǔn)命名參數(shù)的幫助,可以參考Sun標(biāo)準(zhǔn)jar包命名。記住,在目前您不能通過存儲(chǔ)庫來公開發(fā)布這些jar包,這將違反Sun的使用條款。
    <dependency>
    ?? <groupId>javax.activation</groupId>
    ?? <artifactId>activation</artifactId>
    ?? <version>1.0</version>
    ?? <scope>compile</scope>
    </dependency>


    您或許想將依賴項(xiàng)存入一個(gè)源代碼控制器的庫中,源代碼控制器決不能執(zhí)行這個(gè)任務(wù)。依賴項(xiàng)是經(jīng)常變化的,并且通常有一套數(shù)字方案來標(biāo)明其版本。這就是說,您明確地希望有一個(gè)內(nèi)部遠(yuǎn)程存儲(chǔ)庫的備份,如果您有一個(gè),這將確保在存儲(chǔ)庫服務(wù)器崩潰并且不能恢復(fù)的情況下,您不會(huì)丟失所有的自定義資源。不將依賴項(xiàng)放入源代碼控制器中也會(huì)節(jié)省源代碼控制器的存儲(chǔ)庫服務(wù)器上的大量磁盤空間。

    配置存儲(chǔ)庫

    要求項(xiàng)目的每個(gè)開發(fā)者必須在conf目錄中配置存儲(chǔ)庫是不方便的,所以Maven可以同時(shí)查看多個(gè)存儲(chǔ)庫并且將它們?nèi)颗渲迷趐om.xml文件中。讓我們看看一個(gè)例子,它展示了如何在應(yīng)用程序用使用多個(gè)存儲(chǔ)庫。在以下從pom.xml文件摘錄的片斷中,我們?cè)O(shè)置了兩個(gè)存儲(chǔ)庫來讓Maven尋找依賴項(xiàng)。Ibiblio一直是默認(rèn)的存儲(chǔ)庫,我們又添加了Planet Mirror作為后援存儲(chǔ)庫。我們也可以讓團(tuán)隊(duì)使用的本地web服務(wù)器作為第二個(gè)存儲(chǔ)庫。
    <repositories>
    ????<repository>
    ??????<id>Ibiblio</id>
    ??????<name>Ibiblio</name>
    ??????<url>http://www.ibiblio.org/maven/</url>
    ????</repository>
    ????<repository>
    ??????<id>PlanetMirror</id>
    ??????<name>Planet Mirror</name>
    ??????<url>http://public.planetmirror.com/pub/maven/</url>
    ????</repository>
    ??</repositories>


    使用pom.xml父文件來構(gòu)建多個(gè)項(xiàng)目

    軟件公司通常的一種做法就是將多個(gè)項(xiàng)目構(gòu)建到主要產(chǎn)品中。維護(hù)依賴關(guān)系鏈和一次性地構(gòu)建整個(gè)產(chǎn)品足以成為一個(gè)挑戰(zhàn),但是如果使用Maven的話,事情將變得簡單。如果您創(chuàng)建了一個(gè)指向其它子模塊的pom.xml父文件,Maven將為您處理整個(gè)構(gòu)建過程。它將分析每個(gè)子模塊的pom.xml文件,并且按照這些子模塊的相互依賴順序來構(gòu)建項(xiàng)目。如果每個(gè)項(xiàng)目明確地指明它們的依賴項(xiàng),那么子模塊在父文件中的放置順序是不造成任何影響的。但是考慮到其他的開發(fā)者,最好保證子模塊在pom.xml父文件中的放置順序和您期望的子項(xiàng)目被構(gòu)建的順序一樣。下面我們看個(gè)示例。
    pom.xml主文件如下:
    <project>
    ??<modelVersion>4.0.0</modelVersion>
    ??<groupId>com.oreilly</groupId>
    ??<version>1.0-SNAPSHOT</version>
    ??<artifactId>my-app</artifactId>
    ??<packaging>pom</packaging>
    ??<modules>
    ????<module>Common</module>
    ????<module>Utilities</module>
    ????<module>Application</module>
    ???? <module>WebApplication</module>
    ??</modules>
    </project>


    我們需要確保WebApplication子模塊包含了所有的三個(gè)jar包,所以需要將這些jar包聲明為依賴項(xiàng)。在這個(gè)例子中,Utilities項(xiàng)目依賴于Common項(xiàng)目,所以Utilities項(xiàng)目中需要添加一個(gè)對(duì)Common項(xiàng)目的依賴。Application子模塊也是同樣的道理,因?yàn)樗蕾囉贑ommon和Utilities項(xiàng)目,Utilities又賴于Common。如果這個(gè)例子中有60個(gè)子模塊,并且它們都相互依賴,這會(huì)使得新開發(fā)者難以算出什么項(xiàng)目依賴于其它項(xiàng)目,所以這正好是要求確保pom.xml父文件中項(xiàng)目放置順序要清除的原因。

    以下是Utility模塊的依賴項(xiàng):
    <dependencies>
    ????<dependency>
    ??????<groupId>com.oreilly</groupId>
    ??????<artifactId>Common</artifactId>
    ??????<version>1.0-SNAPSHOT</version>
    ????</dependency>
    ??</dependencies>


    以下是如何聲明Application模塊的依賴項(xiàng):
    <dependencies>
    ????<dependency>
    ??????<groupId>com.oreilly</groupId>
    ??????<artifactId>Common</artifactId>
    ??????<version>1.0-SNAPSHOT</version>
    ????</dependency>
    ????<dependency>
    ??????<groupId>com.oreilly</groupId>
    ??????<artifactId>Utilities</artifactId>
    ??????<version>1.0-SNAPSHOT</version>
    ????</dependency>
    ??</dependencies>


    最后是WebApplication模塊的依賴項(xiàng):
    <dependencies>
    ????<dependency>
    ??????<groupId>com.oreilly</groupId>
    ??????<artifactId>Common</artifactId>
    ??????<version>1.0-SNAPSHOT</version>
    ????</dependency>
    ????<dependency>
    ??????<groupId>com.oreilly</groupId>
    ??????<artifactId>Utilities</artifactId>
    ??????<version>1.0-SNAPSHOT</version>
    ????</dependency>
    ????
    ????<dependency>
    ??????<groupId>com.oreilly</groupId>
    ??????<artifactId>Application</artifactId>
    ??????<version>1.0-SNAPSHOT</version>
    ????</dependency>
    ????
    </dependencies>


    現(xiàn)在,我們只需為每個(gè)子模塊的pom.xml文件添加一個(gè)元素來表明它們是一個(gè)邏輯構(gòu)建的一部分:
    <parent>
    ????<groupId>com.oreilly</groupId>
    ????<artifactId>my-app</artifactId>
    ????<version>1.0-SNAPSHOT</version>
    ??</parent>


    在pom.xml父文件所在的同一個(gè)目錄中,存在有項(xiàng)目目錄:Common, Utilities, Application, 和WebApplication。當(dāng)我們?cè)谠撃夸浿羞\(yùn)行mvn package命令時(shí),這些項(xiàng)目會(huì)按照依賴順序而被構(gòu)建。

    插件和報(bào)表

    Maven2.0有大量的插件可以使用。不幸的是,由于Maven的重寫,Maven1.0的插件不能在2.0中使用。盡管如此,還是存在一些可以使用的Maven2.0的插件。下面pom.xml文件中的插件配置示例是直接從Maven2.0網(wǎng)站上得來的。這個(gè)插件是用來配置編譯選項(xiàng)的。
    <plugins>
    ????<plugin>
    ??????<groupId>org.apache.maven.plugins</groupId>
    ??????<artifactId>maven-compiler-plugin</artifactId>
    ??????<configuration>
    ????????<source>1.5</source>
    ????????<target>1.5</target>
    ??????</configuration>
    ????</plugin>
    ??</plugins>


    Maven報(bào)表插件可以用來生成不同的報(bào)表,這些報(bào)表是在當(dāng)你使用mvn site命令生成項(xiàng)目的站點(diǎn)時(shí)產(chǎn)生的。下面的例子展示了如何使用<reporting>元素來配置這類插件中的一個(gè)。
    <reporting>
    ????<plugins>
    ??????<plugin>
    ????????<groupId>org.apache.maven.plugins</groupId>
    ????????<artifactId>maven-project-info-reports-plugin</artifactId>
    ??????</plugin>
    ????</plugins>
    ??</reporting>


    Maven Plugin Matrix是一個(gè)十分實(shí)用的工具,它能給出哪些Maven插件適合于哪些版本的Maven。

    Maven 和 Eclipse

    如何能使全世界最好的IDE變得更好了?答案是使用Maven2的插件,它能幫助您尋找依賴項(xiàng)并自動(dòng)地將它們添加到pom.xml文件中。雖然最好的方法是首先使用Maven來創(chuàng)建您的項(xiàng)目,然后再用命令mvn eclipse:eclipse來生成Eclipse項(xiàng)目文件,這樣最初就能得到一個(gè)好的目錄結(jié)構(gòu),但Maven也可通過其Eclipse插件來管理任何項(xiàng)目。

    您可以在Eclipse自身的升級(jí)器中輸入站點(diǎn)http://m2eclipse.codehaus.org/來安裝插件。在安裝完成并重啟IDE后,您需要在Eclipse的參數(shù)選項(xiàng)中配置此插件,設(shè)置本地存儲(chǔ)庫的位置。這是很重要的一步,因?yàn)槿绻鸈clipse默認(rèn)的存儲(chǔ)庫不能匹配您默認(rèn)的需求,Maven會(huì)重新下載您的依賴項(xiàng)。配置完成后,將項(xiàng)目導(dǎo)入Eclipse,鼠標(biāo)右擊該項(xiàng)目,選擇Maven 2 -> Enable。現(xiàn)在您可以回到之前的步驟,您可以有更多的選項(xiàng)比如添加依賴項(xiàng),這將彈出一個(gè)搜索框,您可以搜索依賴項(xiàng)并添加它們,插件會(huì)替你編輯pom.xml文件。

    插件會(huì)使用Maven來構(gòu)建您的項(xiàng)目,就像Eclipse使用Ant來構(gòu)建項(xiàng)目一樣。如果您想獲取更多的關(guān)于Eclipse整合Maven的信息,可以查閱Maven站點(diǎn)上的Eclipse集成Maven 2.x使用指南。

    另一方面,如果您是一個(gè)IntelliJ使用愛好者,您也能通過運(yùn)行指令mvn idea:idea來完成同樣的任務(wù)。這些IDE????????工具能夠節(jié)省開發(fā)人員的時(shí)間。例如,如果一個(gè)開發(fā)人員為一個(gè)項(xiàng)目添加了一些特征,團(tuán)隊(duì)里的其他開發(fā)人員只需從源代碼控制器的存儲(chǔ)庫中重新獲取項(xiàng)目文件即可,這就節(jié)省了每個(gè)開發(fā)人員必須配置IDE的時(shí)間。

    結(jié)論

    Maven2.0有著許多實(shí)用的特點(diǎn),并且完成任務(wù)十分出色。Maven中最值得稱贊的地方就是使用了標(biāo)準(zhǔn)的目錄結(jié)構(gòu)和部署。這就使得開發(fā)人員能夠適應(yīng)不同的項(xiàng)目,并且不用學(xué)習(xí)任何結(jié)構(gòu)方面新的東西,也不用掌握特殊的指令來構(gòu)建結(jié)構(gòu)。Maven可以通過純腳本來實(shí)現(xiàn)。在文檔方面,由于使用了項(xiàng)目站點(diǎn)構(gòu)建工具,所以當(dāng)項(xiàng)目構(gòu)建完成后,您可以查看所有開發(fā)的當(dāng)前狀態(tài)。

    毫無疑問,當(dāng)提到構(gòu)建配置的伸縮性,易用性和項(xiàng)目管理方面時(shí),Maven2.0足可以將Ant取而代之。在接下來的幾年內(nèi),我們將看到Maven作為標(biāo)準(zhǔn)構(gòu)建技術(shù)更多的使用,直到有人帶來了大家公認(rèn)的“高級(jí)捕鼠器”。您可以從下面列出的Maven項(xiàng)目站點(diǎn)上下載Maven。

    資源
    Matrix:http://www.matrix.org.cn/
    Onjava:http://www.onjava.com/
    Maven項(xiàng)目站點(diǎn)

    Chris Hardin 是McLeod軟件公司的高級(jí)Java工程師。
    posted on 2007-02-12 12:33 小石頭 閱讀(578) 評(píng)論(0)  編輯  收藏 所屬分類: maven、ant
    主站蜘蛛池模板: 国产免费AV片在线观看播放| 2021免费日韩视频网| 91亚洲国产成人精品下载| 国产乱子精品免费视观看片| 亚洲国产欧美一区二区三区| a级亚洲片精品久久久久久久 | 一个人看的www视频免费在线观看 一个人看的免费观看日本视频www | 在线观看AV片永久免费| 偷自拍亚洲视频在线观看99| 国产成人精品日本亚洲| 最近2019中文字幕免费看最新| 污视频网站免费观看| 亚洲导航深夜福利| 亚洲精品偷拍视频免费观看| 黄在线观看www免费看| free哆拍拍免费永久视频| 亚洲香蕉在线观看| 亚洲色中文字幕无码AV| 午夜一级免费视频| 中文字幕免费视频| 国产精品免费视频观看拍拍| 在线综合亚洲中文精品| 亚洲国产综合精品中文第一区| 午夜亚洲国产成人不卡在线| 免费视频专区一国产盗摄| 九九全国免费视频| 亚洲欧洲日韩极速播放| 亚洲成在人天堂在线| 国产精品酒店视频免费看| 最近中文字幕mv免费高清视频8 | 亚洲国产成人精品久久| 亚洲人成色7777在线观看| 国产一区二区三区免费在线观看| **aaaaa毛片免费| 嫩草在线视频www免费看| 麻豆安全免费网址入口| 亚洲人成色在线观看| 亚洲宅男天堂a在线| 亚洲国产人成在线观看69网站| 亚洲日韩国产成网在线观看| 国产成人免费手机在线观看视频|