Maven基本使用(圖文教程)
Maven基本使用
一、安裝
- 下載下來解壓後如下所示
- 配置環境變數
- 檢視配置成功與否
- maven配置檔案
- maven專案目錄結構
使用myeclipse構建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>
<parent>
<groupId>com.robinliew.foo</groupId>
<artifactId>foo-war</artifactId>
<version>0.0.1</version>
</parent>
<!--
maven 的所有構件均通過座標進行組織和管理。maven 的座標通過 5 個元素進行定義,其中 groupId、artifactId、version 是必須的,packaging 是可選的(預設為jar),classifier 是不能直接定義的。
groupId組名,主專案標識 定義當前 Maven 專案所屬的實際專案,跟 Java 包名類似
artifactId - 工程名,子專案(模組)標識 定義當前 Maven 專案的一個模組,預設情況下,Maven 生成的構件,其檔名會以 artifactId 開頭
packaging - 打包方式 定義專案打包方式,如 jar,war,pom,zip ……,預設為 jar。
version - 版本
name - 專案描述名
classifier:定義專案的附屬構件。classifier 不能直接定義,通常由附加的外掛幫助生成
-->
<groupId>com.robinliew.mavendemo</groupId>
<version>0.0.1</version>
<artifactId>com.robinliew.mavendemo</artifactId>
<packaging>war</packaging>
<name>mavendemo</name>
<description>maven快速入門</description>
<!-- 配置依賴的jar包 ->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
</dependencies>
</project>
依賴詳解
- 其中依賴範圍有如下幾種
- compile:編譯依賴範圍,預設值。此選項對編譯、測試、執行三種 classpath 都有效,如 hibernate-core-3.6.5.Final.jar,表明在編譯、測試、執行的時候都需要該依賴
- test:測試依賴範圍。只對測試有效,表明只在測試的時候需要,在編譯和執行時將無法使用該類依賴,如 junit;
- provided:已提供依賴範圍。編譯和測試有效,執行無效。如 servlet-api ,在專案執行時,tomcat 等容器已經提供,無需 Maven 重複引入;
- runtime:執行時依賴範圍。測試和執行有效,編譯無效。如 jdbc 驅動實現,編譯時只需介面,測試或執行時才需要具體的 jdbc 驅動實現;
- system:系統依賴範圍。和 provided 依賴範圍一致,需要通過 顯示指定,且可以引用環境變數;
- import:匯入依賴範圍。使用該選項,通常需要 pom,將目標 pom 的 dependencyManagement 配置匯入合併到當前 pom 的 dependencyManagement 元素。
- 依賴傳遞和依賴範圍
- 如果我們的專案引用了一個Jar包,而該Jar包又引用了其他Jar包,那麼在預設情況下專案編譯時,Maven會把直接引用和間接引用的Jar包都下載到本地。
- 依賴衝突
- 路徑優先(最短路徑)
- 宣告優先:引用路徑相同時,先在pom.xml中宣告的優先
- 依賴排除
<exclusions> <exclusion> <groupId>xxx</groupId> <artifactId>xxx</artifactId> </exclusion> </exclusions>
- 其中依賴範圍有如下幾種
建立一個maven工程
預設配置,點選兩次next後
如果沒有顯示上面的archetype骨架列表,則需要我們先進行配置,點選configure如下
遠端配置是通過訪問http://repo1.maven.org/maven2/archetype-catalog.xml地址進行配置的,由於該檔案較大,且訪問外國網址速度很慢,可能需要等好一會,下面介紹另一種本地配置方式
這種方式需要提前下載配置檔案通。過瀏覽器檢視http://repo1.maven.org/maven2/archetype-catalog.xml頁原始碼(注意:因為檔案較大,網速較慢,請多等一會),複製到本地,命名為archetype-catalog.xml。
如果你的myeclipse出現卡頓現象,檢視是否報GC overhead limit exceeded的錯誤,如果是可以通過下面的方式解決
建立好的maven工程如下所示
可以看到預設建立的目錄結構只有src/main/resources,缺少 src/main/java和src/test/java 。點選該專案後,右擊,選擇build path–>configure build path。
設定完後我們可以檢視maven輸出目錄
當然這是可以自己點選edit修改的,沒有特殊需求的情況下一般不建議修改。
此時maven專案的目錄結構完整了。
設定 Project Facets,設定部署打包結構,刪除測試相關目錄
此時建立一個maven專案完成了。
- 構建及專案部署
右鍵 pom.xml - Run As - Maven -install
二、maven常用的命令
- 首先通過cmd進入要操作的專案目錄
- 常用的幾種命令
- mvn compile 編譯專案原始碼
- mvn clean 刪除 target 目錄
- mvn test 執行測試(執行src/test/java中的測試程式碼)
- mvn clean package(組合命令) Maven 自動幫我們完成專案的編譯、測試、打包
- mvn install 效果跟mvn clean package命令一樣,且專案被打包釋出到了 maven 的倉庫,以後其他專案需要依賴到這個專案,就可以通過在 pom.xml 檔案中新增依賴來引用。
- mvn archetype:generate 自動建立Maven目錄結構
- 下面是mvn archetype:generate 的使用例子
預設回車即可,輸入groupId等,回車
- 下面是mvn archetype:generate 的使用例子
- 常用的幾種命令
三、倉庫
- maven使用一個倉庫,通過宣告依賴關係可以引用各個構件,各構件通過座標被maven管理。
- maven倉庫包括本地倉庫和遠端倉庫。優先從本地倉庫(本地倉庫預設地址為:${user.home}/.m2/repository。)中尋找相關構件,遠端倉庫中的構件下載到本地倉庫使用。中央倉庫是 Maven 核心自帶的遠端倉庫,預設地址:http://repo1.maven.org/maven2。私服是架設在本機或區域網中的一種特殊的遠端倉庫,通過私服可以方便的管理其它所有的外部遠端倉庫。
- 本地倉庫的配置
- 中央倉庫配置(maven預設配置好的)
- 映象倉庫的配置
- 私服的搭建
大多數公司使用私服,暫時先寫到這,後面抽時間再介紹搭建私服