摘要:Maven1.0已經(jīng)歷了幾年的時間,并且作為Ant的替代品已被廣大的開發(fā)人員所接收,但它并沒有在很大程度使開發(fā)人員從Ant的build.xml文件中解脫出來。Maven1.0速度慢并且笨拙,使用起來的困難度并不亞于使用Ant的項目。事實上,它的核心是基于Ant實現(xiàn)的。在經(jīng)過了幾乎徹底的重寫后,Maven2.0誕生了。
一個java項目中最困難的地方就是如何著手啟動它。在啟動項目之前,我們必須配置好所有的邏輯關(guān)系。比如,Java源代碼應(yīng)該放在何處?單元測試應(yīng)該在何處進(jìn)行?依靠的jar包應(yīng)該如何放置?如何構(gòu)建項目,如何形成文檔,如何測試和部署項目?在這種情況下,開發(fā)人員不同的處理選擇將會影響項目的余下部分。您的選擇可能會使你陷入困境,也可能會在將來證實您是一位Java架構(gòu)大師。我們假定后者是我們奮斗的目標(biāo),接下來就進(jìn)入我們的正題。
構(gòu)建一個Java項目可以使用很多工具,其中包括Ant。Ant作為一款具有革命性的工具,一直是眾多開發(fā)者使用工具中的首選,它能使開發(fā)人員擺脫使用大量make命令的苦海。對于那些不太熟悉make命令的人來說,他們有充足的理由來表明使用命令并不是構(gòu)建Java項目的最好工具,因為它不具備平臺獨立性并且不易使用。Ant的出現(xiàn)解決了以上的問題,它使用了一個平臺獨立的工具,該工具能夠解析XML配置文件,即build.xml。雖然Ant由于其諸多的優(yōu)點而備受歡迎,但它同樣有一些缺點。build.xml文件由于采用了極其簡短的描述方式,使得開發(fā)人員需要預(yù)先學(xué)習(xí)它的語法。雖然學(xué)習(xí)曲線不是很陡峭,但Java開發(fā)人員更應(yīng)該把時間放在開發(fā)上面。
Maven是新一代的生力軍,它的境遇正好和幾年前的Ant十分類似。Maven1.0已經(jīng)歷了幾年的時間,并且作為Ant的替代品已被廣大的開發(fā)人員所接收,但它并沒有在很大程度使開發(fā)人員從Ant的build.xml文件中解脫出來。Maven1.0速度慢并且笨拙,使用起來的困難度并不亞于使用Ant的項目。事實上,它的核心是基于Ant實現(xiàn)的。在經(jīng)過了幾乎徹底的重寫后,Maven2.0誕生了。
版權(quán)聲明:任何獲得Matrix授權(quán)的網(wǎng)站,轉(zhuǎn)載時請務(wù)必保留以下作者信息和鏈接
作者:Chris Hardin;mycj(作者的blog:http://blog.matrix.org.cn/page/mycj)
原文:http://www.onjava.com/pub/a/onjava/2006/03/29/maven-2-0.Html
Matrix:http://www.matrix.org.cn/resource/article/44/44475_Maven2.html
要害字:Maven2
Maven2.0的優(yōu)點
Maven2.0有許多很好功能,這些功能不僅僅是幫助您構(gòu)建項目。假如您剛剛開始啟動一個Java項目,并且想使該項目快速地開展下去,Maven2.0能夠在幾分鐘內(nèi)達(dá)到您的要求。以下是Maven2.0的一些優(yōu)點:
--標(biāo)準(zhǔn)的項目布局和項目結(jié)構(gòu)生成器
--標(biāo)準(zhǔn)的依靠治理機(jī)制
--多項目支持
--在開發(fā)者需要的時候及時地下載新的插件和功能部件
--生成最新項目信息的網(wǎng)站
--集成了源代碼控制軟件:CVS和Subversion
以上列表展示的只是Maven2.0特點中的一小部分。但這足以使Maven2.0成為一個構(gòu)建治理系統(tǒng)可靠的選擇。既然我們已經(jīng)知道Maven是個什么東西了,接下來讓我們看看如何使用它。
入門
我們要做的第一件事情就是設(shè)置目錄結(jié)構(gòu),但這并不需要讓我們手動設(shè)置,Maven會根據(jù)您開發(fā)的項目類型來為您做這件事。一旦您下載并解壓了最新發(fā)布的Maven 2.0,您應(yīng)該將Maven所在目錄下面的bin目錄添加到您的系統(tǒng)路徑下。您可以運行命令mvn -version來測試您的安裝。
既然已經(jīng)安裝上了工具,讓我們看看創(chuàng)建一個簡單的Java項目的例子。Maven使用原型來決定目錄結(jié)構(gòu)是如何展現(xiàn)的。Maven自帶了幾個內(nèi)建的原型,您也可以自定義原型。
mvn archetype:create -DgroupId=com.oreilly -DartifactId=my-app
您看,這就生成了我們的項目布局。
my-app
----src
----main
----java
----com
----oreilly
----test
----java
----com
----oreilly
對,就這么簡單。這種目錄結(jié)構(gòu)可以通過創(chuàng)建一個新的原型來覆寫,但并不推薦這么做,因為Maven的一個優(yōu)點就是使用標(biāo)準(zhǔn)的目錄結(jié)構(gòu)。該目錄結(jié)構(gòu)包含兩個源代碼樹,一個是Java應(yīng)用程序的源代碼,另一個是單元測試代碼。同時您也許會注重到,當(dāng)?shù)谝淮芜\行Maven的時候,它會進(jìn)行一些下載工作。當(dāng)您開始調(diào)用工具時,Maven會根據(jù)您使用的插件來更新自身的一些所需功能。Maven默認(rèn)會從Ibiblio存儲庫中得到更新。您可以在Maven安裝目錄下的conf目錄中,或者項目自身中修改Maven遠(yuǎn)程存儲庫的選擇。
您會發(fā)現(xiàn)Maven在my-app目錄下創(chuàng)建了一個pom.xml文件。這是項目的最基本部分。pom.xml文件包含了一組指令,這些指令告訴Maven如何構(gòu)建項目和包含哪些其它的非凡指令(POM是“項目對象模型”的縮寫)。在默認(rèn)的情況下,Maven包含了JUnit的依靠以此來鼓勵單元測試。
<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>
新聞熱點
疑難解答