Maven與Ant比較


Ant是軟件構建工具,Maven的定位是軟件項目管理和理解工具。Maven除了具備Ant的功能外,還增加了以下主要的功能

1)使用Project Object Model來對軟件項目管理;

2)內置了更多的隱式規則,使得構建文件更加簡單;

3)內置依賴管理和Repository來實現依賴的管理和統一存儲;

4)內置了軟件構建的生命周期;

 

 

一 POM(Project Object Model)與項目管理

每一個Maven工程都包含一個pom.xml文件,其他存儲了該工程相關的信息,從而達到一定的項目管理的功能。例如包含了工程的配置,缺陷跟蹤系統信息,工程的組織,許可協議,工程的路徑,依賴等信息。

典型的pom.xml如下:

<project … >
<modelVersion>4.0.0</modelVersion>

<!-- The Basics -->
<groupId>...</groupId>
< artifactId>...</artifactId>
< version>...</version>
< packaging>...</packaging>
< dependencies>...</dependencies>
< parent>...</parent>
< dependencyManagement>...</dependencyManagement>
< modules>...</modules>
< properties>...</properties>

<!-- Build Settings -->
<build>...</build>
< reporting>...</reporting>

<!-- Project Meta Data -->
<name>...</name>
< description>...</description>
< url>...</url>
< inceptionYear>...</inceptionYear>
< licenses>...</licenses>
< organization>...</organization>

<developers>...</developers>
< contributors>...</contributors>

<!-- Environment -->
<issueManagement>...</issueManagement>
< ciManagement>...</ciManagement>
< mailingLists>...</mailingLists>
< scm>...</scm>
< prerequisites>...</prerequisites>
< repositories>...</repositories>
< pluginRepositories>...</pluginRepositories>
< distributionManagement>...</distributionManagement>
< profiles>...</profiles>
< /project>

 

 

二 隱形的規則和簡單的構建文件

Maven工程的目錄結構必須為如下的結構

 

Maven還有內置的構建生命周期,內置定義了build,test,package,deploy等task。

 

由於Maven工程目錄的規則和內置的構建生命周期,從而使得構建文件簡單,例如如下的構建文件中甚至沒有出現build,package等task的定義,但是我們已經可以調用wvm package等內置的task了:

<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/xsd/maven-4.0.0.xsd">   <modelVersion>4.0.0</modelVersion>   <groupId>com.mycompany.app</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>

 

三 依賴管理和Repository

Maven的dependence management用來管理所有此project的dependences,且在dependence repository中自動查找和下載dependence。

 

1) 依賴管理

例如工程以來MySQL如下:

<dependencyManagement>
< dependencies>
< dependency>
< groupId>mysql</groupId>
< artifactId>mysql-connector-java</artifactId>
< version>5.1.2</version>
< /dependency>
< dependencies>
< /dependencyManagement>

 

<dependency>
< groupId>mysql</groupId>
< artifactId>mysql-connector-java</artifactId>
< /dependency>

 

2)dependence repository

更好的辦法是公司或每個team有自己的repository,例如下圖:

 

 

四 構建生命周期的定義

構建生命周期顯式地定義了構建,測試,和發布的過程,是每個Maven工程的核心。Maven包含了3個內置的生命周期:default,clean和site。

 

1)default生命周期處理了工程的編譯,測試和部署,他一共包含20多個階段,主要的階段如下:

Validate: 驗證所有的工程信息是否可用且正確

Compile: 編譯源代碼

Test: 在一套framework下運行但願測試

Package: 以發布的格式打包編譯的代碼

Integration-test: 在集成測試環境中處理(部署)發布包

Verify: 檢測發布包是否正確可用
Install: 在本地的repository上安裝發布包
Deploy: 在遠程的repository上安裝發布包

 

以上的階段具有先后順序,執行某個階段時,此階段前的所有階段都會被自動地執行。

 

2)clean生命周期處理工程的清理工作,包含3個階段:pre-clean, clean, post-clean。

 

3)site生命周期處理工程site文檔的生成和部署,包含下列階段:

pre-site, site, post-site 和site-deploy,其中site-deploy用來將site文檔部署到指定的web server上。

 

 

 

轉:http://www.cnblogs.com/itech/archive/2011/11/01/2231837.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM