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
<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為安裝的JDK(m2eclipse需要使用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中的座標:使用groupId、artifactId、version、packaging、classifier唯一描述一個構件。
2.座標詳解:
a) groupId:定義專案隸屬的實際專案(組),一般為公司網址反向。
b) artifactId:定義一個專案(模組)。名稱作為生成構件的字首,後跟實際專案groupId和版本。
c) Version:定義專案所處的版本。
d) Packaging:專案的打包方式,預設為jar。
e) Classifier:幫助定義構建輸出一些附屬構件,javadoc.jar和sources.jar。
3.依賴:
a) groupId、artifactId和version定義座標描述構件。
b) type:定義依賴型別。
c) Scope:定義依賴的範圍,分別針對三種classpath:test、compile、run,有如下分類:test:測試,compile:編譯,provided(編譯、測試有效,執行無效),runtime:執行時有效,system:類似provided但是需要使用systemPath顯式指定依賴檔案路徑,import:不會對三種classpath產生影響。預設為compile範圍。
d) Optional:標記依賴是否可選。
e) Exclusions:用於排出傳遞依賴性。
4.Maven依賴調解使用的是路徑最近者優先:A->B->C->X1.0,A->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表示該映象是遠端伺服器中的中央伺服器。