Maven作為一個構建工具,不僅能幫我們自動化構建,還能夠抽象構建過程,提供構建任務實現;它跨平臺,對外提供了一致的操作接口,這一切足以使它成為優秀的、流行的構建工具。
Maven不僅是構建工具,還是一個依賴管理工具和項目管理工具,它提供了中央倉庫,能幫助自動下載構件。
一、Maven 安裝
在安裝Maven之前,首先確認已經安裝了JDK。
java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
然後去Maven官網下載界面下載想要的版本,並解壓到你想要的目錄就行。以Windows 平臺為例:
解壓之後的子目錄簡要說明:
- bin目錄
該目錄包含了mvn運行的腳本,這些腳本用來配置java命令,準備好classpath和相關的Java系統屬性,然後執行Java命令。
- boot目錄
該目錄只包含一個文件,該文件為plexus-classworlds-2.5.2.jar。plexus-classworlds是一個類加載器框架,相對於默認的java類加載器,它提供了更加豐富的語法以方便配置,Maven使用該框架加載自己的類庫。
- conf目錄
該目錄包含了一個非常重要的文件settings.xml。直接修改該文件,就能在機器上全局地定製Maven的行為。
- lib目錄:
該目錄包含了所有Maven運行時需要的Java類庫,Maven本身是分模塊開發的,因此用戶能看到諸如maven-core-3.0.jar、maven-model-3.0.jar之類的文件,此外這裡還包含一些Maven用到的第三方依賴如commons-cli-1.2.jar、commons-lang-2.6.jar等等。
最後設置一下環境變量,將Maven安裝配置到操作系統環境中,主要就是配置M2_HOME、MAVEN_HOME和PATH三項,如圖所示:
上述配置完成之後,打開cmd命令窗口,輸入 mvn -v,如得到下面信息就說明配置成功了:
mvn -v
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: C:\\maven-3.3.9
Java version: 1.8.0_111, vendor: Oracle Corporation
Java home: C:\\Java\\jdk1.8.0_111\\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "dos"
二、Maven常用命令和設置
1. Maven常用命令
mvn clean:表示運行清理操作(會默認把target文件夾中的數據清理)。
mvn clean compile:表示先運行清理之後運行編譯,會將代碼編譯到target文件夾中。
mvn clean test:運行清理和測試。
mvn clean package:運行清理和打包。
mvn clean install:運行清理和安裝,會將打好的包安裝到本地倉庫中,以便其他的項目可以調用。
mvn clean deploy:運行清理和發佈(發佈到私服上面)。
2. conf/settings.xml 配置文件
在平時的開發中,我們往往不會使用默認的中央倉庫,默認的中央倉庫訪問的速度比較慢,所以選擇一個國內的鏡像就很有必要,推薦國內的阿里雲鏡像。
阿里雲鏡像:配置很簡單,修改conf文件夾下的settings.xml文件,添加如下鏡像配置:
<mirror>
<name>aliyun maven/<name>
<mirrorof>central/<mirrorof>
上例子中,<mirrorof>的值為central,表示該配置為中央庫的鏡像,任何對於中央倉庫的請求都會轉至該鏡像,用戶也可以用同樣的方法配置其他倉庫的鏡像。/<mirrorof>
這裡介紹下<mirrorof>配置的各種選項:/<mirrorof>
- <mirrorof>*<mirrorof>: 匹配所有遠程倉庫。/<mirrorof>/<mirrorof>
- <mirrorof>external:*<mirrorof>: 匹配所有遠程倉庫,使用localhost的除外,使用file://協議的除外。也就是說,匹配所有不在本機上的遠程倉庫。/<mirrorof>/<mirrorof>
- <mirrorof>repo1,repo2<mirrorof>: 匹配倉庫repo1和repo2,使用逗號分隔多個遠程倉庫。/<mirrorof>/<mirrorof>
- <mirrorof>*,!repo1<mirrorof>: 匹配所有遠程倉庫,repo1除外,使用感嘆號將倉庫從匹配中排除。/<mirrorof>/<mirrorof>
需要注意的是,由於鏡像倉庫完全屏蔽了被鏡像倉庫,當鏡像倉庫不穩定或者停止服務的時候,Maven仍將無法訪問被鏡像倉庫,因而將無法下載構件。
3. Maven倉庫
Maven倉庫主要分為:本地倉庫、中央倉庫和私服。
(1)本地倉庫
一般來說,在Maven項目目錄下,沒有諸如lib/這樣用來存放依賴文件的目錄。當Maven在執行編譯或測試時,如果需要使用依賴文件,它總是基於座標使用本地倉庫的依賴文件。
默認情況下,不管在Window還是Linux下,每個用戶在自己用戶目錄下都有一個路徑名為.m2/repository/的倉庫目錄。
如果你想自定義本地倉庫目錄地址。你可以編輯文件~/.m2/settings.xml,設置localRepository元素的值為想要的倉庫地址。
<settings>
<localrepository>D:\\maven\\repository\\/<localrepository>
(2)遠程倉庫-中央倉庫
由於最原始的本地倉庫是空的,Maven必須知道至少一個可用的遠程倉庫,才能在執行Maven命令的時候下載到需要的構件。中央倉庫就是這樣一個默認的遠程倉庫,Maven的安裝文件自帶了中央倉庫的配置。
中央倉庫包含了這個世界上絕大多數流行的開源Java構件,以及源碼、作者信息、許可證信息等,每個月這裡都會接受全世界Java程序員大概1億次的訪問,它對全世界Java開發者的貢獻由此可見一斑。
(3)遠程倉庫-私服
私服是一種特殊的遠程倉庫,它是架設在局域網內的倉庫服務,私服代理廣域網上的遠程倉庫,供局域網內的Maven用戶使用。當Maven需要下載構件的時候,它從私服請求,如果私服上不存在該構件,則從外部的遠程倉庫下載,緩存在私服上之後,再為Maven的下載請求提供服務。因此,一些無法從外部倉庫下載到的構件也能從本地上傳到私服上供大家使用。
三、Maven在IntelliJ IDEA中的設置
這裡介紹一下IDEA中如何配置引入我們上面安裝好的Maven。
閱讀更多 軟件架構 的文章