1. 程式人生 > >Maven3學習總結-環境搭建

Maven3學習總結-環境搭建

encoding 並且 log pom blog family 公司 win ces

我們在進行java項目開發時,尤其是SSH等框架整合的項目時,最頭痛的就是jar包的沖突等問題,怎樣解決該問題並進行良好的項目構建呢?apache的Maven能夠幫我們解決以上的問題。


Maven 是一個項目管理和構建自己主動化工具。可是對於我們程序猿來說。我們最關心的是它的項目構建功能。


首先:從Maven官網(http://maven.apache.org/download.cgi ;)下載maven。並解壓縮。

其次:配置maven的環境變量:M2_HOME,右鍵我的電腦-》環境變量-》用戶變量-》創建->M2_HOME,value:就是你的maven的bin所在文件夾。並把該變量加入到path中。

技術分享

最後:測試mavne是否安裝成功。在CMD命令中鍵入 mvn -v 命令:假設出現例如以下所看到的。就表示安裝成功mavne

技術分享

Maven 使用慣例優於配置的原則 。它要求在沒有定制之前,全部的項目必須遵循例如以下的結構:
app
--pom.xml
--src
--main
--java
--package...
--class
--test
--java
--package..
--class
pom.xml文件時項目構建文件(Project Object Model):其內容例如以下:

<?xml version="1.0" encoding="UTF-8" ?

> <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>org.oracle.maven</groupId> <artifactId>maven-hello</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> </dependencies> </project>


以上文件文件裏 modelVersion是模塊版本號,對於Maven2以後版本號此處都是4.0.0, <groupId>:表示項目屬於哪一個組。此處一般都是相應公司。<artifactId>是模塊(子項目)的唯一名稱,<version>表示當前的版本號(SNAPSHOT:表示快照版本號。測試)<name>用於說明項目。

依據以上結構創建好項目結構:

技術分享

以上的main中存放項目(模塊) 的主代碼,test中用與保存測試代碼,在main中的winstar包下創建一個java類:代碼例如以下:

<code>

package org.winstar; public class HelloMaven{ public String sayHello(){ return "Hello Maven"; } }

</code>

回到CMD命令中,運行mvn compile(編譯命令) 會看到例如以下:

技術分享

技術分享

BUILD SUCCESS:構建成功,同一時候在項目中出現了一個target目錄在target下有classes和maven-status兩個目錄,我們的HelloMaven.class文件mavne已經幫我們自己主動編譯完畢並保存在classes目錄中。

在test->java->org->winstar包下創建例如以下測試類,代碼例如以下:

<code>

package org.oracle.domain;
import org.junit.*;
import static org.junit.Assert.*;
public class HelloTest{
@Test
public void test(){
Hello hello=new Hello();
String str=hello.sayHi();
assertEquals(str,"hello");
}
}

</code>

保存pom.xml文件後。運行mvn test, maven會自己主動從網上(中央倉庫。這個後頭會講)下載所需的jar。並保存的本地的(倉庫:默認在C:\Users\Administrator\.m2\repository文件夾下)硬盤上。我們能夠查看該文件夾,發現多了個junit的文件夾,當中已經包括了jar文件。

運行安裝,將項目生成jar,在CMD中運行 mvn clean install 命令(clean用於清空target文件夾),會看到例如以下:

技術分享

mavne會把項目生成hello-mavne-0.0.1-SNAPSHOT.jar文件,當中 hello-maven是<artifactiId>的名稱。同一時候,這個jar文件會保存到本地倉庫中。

我們把這個jar文件 僅僅需通過項目的pom.xml文件導入就可以。

我們完畢第一maven項目後。基本了解了maven的項目結構和兩個基本命令:mvn compile(編譯) mvn test(測試),並且maven的項目須要網絡的支持(須要從中央倉庫中下載jar文件)。那麽maven究竟能給我們帶來什麽優點(怎樣實現項目、模塊的自己主動構建以及管理呢)?接下來我們來做第二個實驗,參考第一個maven項目結構,建立一個新的目錄(項目,其層次結構與第一個同樣)。

技術分享

在model中創建一個java類:

<code>

package org.winstar.model;

public class World{
public String show(){
HelloMaven hm=new HelloMaven();
return hm.sayHello();
}
}

</code>

首先我們的通知maven要導入的模塊名稱。mvn通過GAV(GroupId,ArtifactId,Version),簡稱“坐標” 來定位項目,並建立項目的依賴關系(依賴關系是maven中的一個重點,這個後面會講到)。在新創建的項目的pom.xml文件裏加入例如以下代碼:

<?

xml version="1.0" encoding="UTF-8"?> <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>org.winstar.maven.ch002</groupId> <artifactId>maven_002</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.winstar.maven.ch001</groupId> <artifactId>hello_maven</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies> </project>

編輯並保存該文件,回到cmd中運行例如以下命令:

技術分享

至此,我們的項目成功執行(並導入第一個項目模塊),有點感覺啦吧。。!


通過以上的兩個實驗。我們發現mavne的項目架構。那麽我們每次都須要這麽麻煩的去手動的創建文件文件夾嗎(Eclipse的mavne支持和sts的mavne支持。後面會講),不須要的。我們僅僅要運行 mvn archetype: generate。 maven會自己主動依據骨架來完畢項目的創建。
首先我們創建一個目錄,然後進入該目錄,並運行mvn archetype:generate

等待。

。。

提示輸入groupId.artifactId: version package 最後鍵入y完畢項目的構建,看我們的目錄吧!自己主動完畢。太給力啦。
我們會看到mavne會自己主動聯網下載所需的jar文件資源(同一時候自己主動保存到本地倉庫中,下次就不需從網上去下載了。

本地倉庫能夠在maven的文件夾中有個conn的文件夾,該文件夾下有一個settings.xml文件改動成自己的文件夾就可以)。

mvn archetype:generate命令會自己主動創建maven項目架構(包含pom.xml和各個目錄)這個命令就是在Eclipse中創建mavne項目時用到的。好了簡單總結一下mvn的基本命令:
1:mvn compile--->編譯
2:mvn test--->測試(會自己主動生成測試報告)
3: mvn clean package--->將項目打包(clean:清空target文件夾)
4:mvn clean install--->安裝(會依據artifactiId和version生成一個jar,並保存到本地的倉庫中)
5:mvn archetype: generate---->(依據archetype:骨架)自己主動創建mavne項目 。
















Maven3學習總結-環境搭建