1. 程式人生 > >Maven實戰學習筆記1

Maven實戰學習筆記1

Maven實戰

Chap 01 Maven簡介

1.Maven是跨平臺的構建、專案管理、依賴管理工具。

Chap 02 Maven的安裝和配置

1.Windows安裝:

a) 下載壓縮包後,配置環境變數M2_HOME,並在path環境變數中新增%M2_HOME%\bin;可以使用如下命令檢測:

mvn -v

b) 安裝目錄分析:

i. bin:執行指令碼

ii. boot:包含的plexus-classworlds是一個類載入器框架。

iii. conf:配置檔案,如settings.xml

iv. lib:執行時需要的Java類庫。

c) 預設倉庫位置為使用者目錄下的.m2目錄,即:~/.m2

。可以在settings.xml中進行配置:

<localRepository>D:\Development\Repository</localRepository>

d) 使用ping repol.maven.com檢查是否能連線中央倉庫。連線不上可以在settings.xml中配置使用國內的映象:

  <mirrors>

    <mirror>

      <id>alimaven</id>

      <name>aliyun maven</name>

      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>

      <mirrorOf>central</mirrorOf>        

    </mirror>

  </mirrors>

使用mvn help:system命令會自動下載依賴,進而檢查映象配置的正確性。

e) 可在settings.xml中的proxies標籤下配置代理。

f) Eclipse下的maven外掛為m2eclipse。通常不使用內建的maven外掛,並需要修改eclipse預設執行的環境:JRE為安裝的JDKm2eclipse需要使用JDK)。

g) MAVEN_OPTS環境變數用於設定執行時的JVM大小,例如設定為:

-Xms128m -Xmx512m

安裝路徑下的settings.xml%M2_HOME%/conf/settings.xml)控制所有使用者,一般會拷貝一份放到當前使用者目錄下~/.m2/settings.xml,僅對當前使用者有效。

PS:使用者目錄下的配置會安裝目錄下的配置進行合併。

Chap 03 Maven使用入門

1.配置檔案:pom.xml

2.專案座標:groupId專案組,一般為公司網址反向;artifactId專案模組名,version專案版本。

3.預設主程式碼位置:src/main/java,通過命令mvn clean compile進行清理並編譯。

4.預設測試程式碼位置:src/test/java,編譯後通過mvn clean test進行清理並執行。

5.使用mvn clean package進行打包,mvn clean install安裝到本地庫,方便其他專案使用。

6.使用mvn-shade-plugin外掛打包程式為可執行程式。

7.使用mvn archetype:generate勾勒專案骨架。

PS:執行main的一種方法:mvn exec:java -Dexec.mainClass="com.conan.MainClass"

Chap 04 背景案例

Chap 05 座標和依賴

1.Maven中的座標:使用groupIdartifactIdversionpackagingclassifier唯一描述一個構件。

2.座標詳解:

a) groupId:定義專案隸屬的實際專案(組),一般為公司網址反向。

b) artifactId:定義一個專案(模組)。名稱作為生成構件的字首,後跟實際專案groupId和版本。

c) Version:定義專案所處的版本。

d) Packaging:專案的打包方式,預設為jar

e) Classifier:幫助定義構建輸出一些附屬構件,javadoc.jarsources.jar

3.依賴:

a) groupIdartifactIdversion定義座標描述構件。

b) type:定義依賴型別。

c) Scope:定義依賴的範圍,分別針對三種classpathtestcompilerun,有如下分類:test:測試,compile:編譯,provided(編譯、測試有效,執行無效),runtime:執行時有效,system:類似provided但是需要使用systemPath顯式指定依賴檔案路徑,import:不會對三種classpath產生影響。預設為compile範圍。

d) Optional:標記依賴是否可選。

e) Exclusions:用於排出傳遞依賴性。

4.Maven依賴調解使用的是路徑最近者優先:A->B->C->X1.0A->D->X2.0。這樣會使用X2.0。對於路徑長度一樣的採用第一宣告優先(pom中依賴宣告的順序)。

5.傳遞性依賴:非直接引用的依賴。

5.可選依賴適應於專案可以使用多個特性,但是同時只能使用一個特性,如專案是一個數據庫介面,支援多種資料庫,在構建這個專案是,需要使用的資料庫驅動可以有多種,但是同時只能使用一種。

6.使用exclusions元素排出傳遞性依賴,防止依賴不穩定的版本。

7.使用properties元素定義屬性,然後通過${}引用。

8.使用mvn dependency:list列出所有已解析的依賴,mvn dependency:analyze分析依賴。

Chap 06 倉庫

1.Maven倉庫分為本地倉庫和遠端倉庫(中央倉庫central、私服和其他公共庫)

2.使用repository標籤配置遠端伺服器,如需認證,使用server標籤配置使用者名稱和密碼。

3.使用distributionManagement標籤能夠將生成的構件部署到遠端倉庫,命令為mvn clean deploy

4.含有snapshot的快照版本,解析時會自動下載最新的版本。

5.配置遠端伺服器將接管本地找不到後使用的中央伺服器。

6.映象提供了一種動態訪問遠端倉庫的機制,使用不同的網路可以自動使用可以訪問的映象,不用每次變更網路就修改配置。使用mirror配置映象,mirrorOf值配置為central表示該映象是遠端伺服器中的中央伺服器。