關於Maven的好的資料:
Apache官網:http://maven.apache.org/
Apache Maven 入門篇 ( 上 ):http://www.oracle.com/technetwork/cn/community/java/apache-maven-getting-started-1-406235-zhs.html
Apache Maven 入門篇 ( 下 ):http://www.oracle.com/technetwork/cn/community/java/apache-maven-getting-started-2-405568-zhs.html
Maven教程:http://www.yiibai.com/maven/maven_environment_setup.html
孔浩Maven視訊教程:http://www.icoolxue.com/album/show/45
1.在Eclipse中右鍵,New->Maven Project,一路Next,然後輸入專案資訊:
Group Id:com.maven.demo
Artifact Id:mavenDemo
Version:選擇”0.0.1-SNAPSHOT“就好
package:這一欄會自動填充為 Group Id.Artifact Id的形式。不用管。
點選Finish之後,專案新建完成。其中 “src/main/java”目錄包含了專案的原始碼,"src/test/java"目錄包含了專案的測試程式碼,pom.xml是專案的專案物件模型。
目錄 | 檔案 |
/ | 存放pom.xml和所有子目錄 |
/src/main/java | 專案的原始碼 |
/src/main/resource | 專案需要用到的資源 |
/src/test/java | 專案的測試原始碼 |
/src/test/resource | 測試需要用到的資源 |
/target | 編譯產生的檔案 |
2.Maven採用了一種被稱為project object model(POM)的概念來管理專案,所有的專案配置資訊都被定義在一個叫做pom.xml的檔案中。通過該檔案,maven可以管理專案的整個生命周 期,包括編譯、構建、測試、釋出、報告等等。我們開啟pom.xml檔案,會看到裡面的內容如下:
<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.maven.demo</groupId> <artifactId>mavenDemo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>mavenDemo</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
<project>:所有pom.xml檔案中的頂層元素,申明瞭一些POM相關的名稱空間以及xsd元素,用來約束maven的寫法。
<modelVersion>:指POM使用的物件模型的版本。這個值很少改動,對於Maven2及Maven3來說,只能是4.0.0。
<groupId>:該值來源於我們建立專案時輸入的”Group Id"。指明建立專案的組織或者小組的唯一標識。groupId是專案的關鍵標識,此標識以組織的完全限定名來定義。比 如,org.apache.maven.plugins是所有Maven外掛專案指定的groupId。
<artifactId>:該值來源於我們建立專案時輸入的“Artifact Id"。指明此專案產生的主要產品的基本名稱。專案的主要產品通常為一個JAR檔案。第二,原始碼包通常使用artifactId作為最後名稱的一部分。 典型的產品名稱使用這個格式: <artifactId>- <version>. <extension>(比如:myapp-1.0.jar)。
<version>:該值來源於我們建立專案時選擇的”Version“。表示專案產品的版本號。Maven幫助你管理版本,可以經常看到SNAPSHOT這個版本,意思是快照,表明專案處於開發階段,是不穩定的版本。
<packaging>:指專案產生的主要產品的格式。
在POM中,groupId,artifactId,packaging,version叫做maven的座標,它能唯一的確定一個專案。有了maven的座標,我們也可以用來指定我們的專案所依賴的其他專案,外掛,或者父專案。一般maven座標寫成如下的格式:
groupId:artifactId:packaging:version
像我們的例子就會寫成:
com.mycompany.helloworld: helloworld: jar: 1.0-SNAPSHOT
我們的Maven示例很簡單,但是大專案一般會分成幾個子專案。在這種情況下,每個子專案就會有自己的 POM 檔案,然後它們會有一個共同的父專案。這樣只要構建父專案就能夠構建所有的子專案了。子專案的 POM 會繼承父專案的 POM。另外,所有的 POM都繼承了一個 Super-POM。Super-POM 設定了一些預設值,比如預設的目錄結構,預設的外掛等等,它遵循了慣例優於配置的原則。所以儘管我們的這個 POM 很簡單,但是這只是看得見的一部分。執行時候的 POM 要複雜的多。 如果想看到執行時候的 POM 的全部內容的話,可以執行下面的命令:
$mvn help:effective-pom
<name>:專案的顯示名稱,通常用於maven產生的文件中。值預設為 artifactId。
<url>:指定專案站點,通常用於maven產生的文件中。
<properties>:專案的”Properties"。對應於在專案上右鍵->"Properties"。裡面可以配置專案採用的編碼方式等等。
<dependencies>:指專案的依賴。通常由很多的<dependency>組成,這裡預設只有“junit-3.8.1"。
<dependency>:一個依賴單元。意思是本專案需要依賴一個”groupId和 artifactId為junit,並且version為3.8.1“的另外一個專案,其實就是”junit-3.8.1.jar"包。實際使用中,如果 我們需要某個jar包,就會新增一個<dependency>單元,然後更新專案之後maven就會自動幫助我們下載我們需要的jar包。
下面我們通過更改pom.xml的方式來下載專案需要的包。
更改pom.xml,新增 junit4.8和testng依賴,也就是:
<dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.1.1</version> <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.2</version> </dependency>
3.更新專案。在專案上右鍵,選擇 Maven->“Update Project"。更待更新完畢,可以看到專案結構多了一個”Maven Dependencies"庫。開啟庫即可看到我們新新增的junit 和testng包。