Apache Maven是一個很流行的軟件項目管理和理解工具,它能夠被用來構建和管理任何基于java的項目,主要有以下幾個目標:
• 簡化構建過程
• 提供統(tǒng)一的構建系統(tǒng)
• 提供高質量的項目信息
• 鼓勵更好的開發(fā)實踐
考慮到maven的流行度,本篇就先從maven的安裝和配置講起。
maven官網最新的版本是3.9.1,我們就以此版本為例進行講解。
注:maven 3.9+以上的版本需要依賴JDK 8或者更高版本的JDK。
點擊apache-maven-3.9.1-bin.zip進行下載,或者直接訪問以下網址進行下載
https://dlcdn.apache.org/maven/maven-3/3.9.1/binaries/apache-maven-3.9.1-bin.zip
將剛才下載下來的apache-maven-3.9.1-bin.zip文件解壓到我們常用的安裝開發(fā)工具的目錄,比如
D:\developer目錄,那么maven的主目錄就是D:\developer\apache-maven-3.9.1-bin
(1)進入Windows系統(tǒng)的"高級系統(tǒng)設置",點擊右下角的“環(huán)境變量”,進入環(huán)境變量的維護頁面
(2)編輯"系統(tǒng)變量"列表中的Path配置項,在編輯頁面新增一條配置項的值,也即新安裝的maven的bin目錄的全路徑名:D:\developer\apache-maven-3.9.1-bin\bin,然后點擊確定保存。
(3)打開一個新的cmd命令行頁面,執(zhí)行下述命令
mvn -version
如果得到類似下面的響應輸出,說明安裝成功。
Apache Maven 3.9.1 (2e178502fcdbffc201671fb2537d0cb4b4cc58f8)
Maven home: D:\developer\apache-maven-3.9.1-bin\bin\..
Java version: 1.8.0_281, vendor: Oracle Corporation, runtime: D:\developer\Java\jdk1.8\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
我們先看一下官方給我們提供的settings.xml文件的格式,可以在maven安裝目錄下的conf目錄下找到該文件。
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository/>
<interactiveMode/>
<offline/>
<pluginGroups/>
<servers/>
<mirrors/>
<proxies/>
<profiles/>
<activeProfiles/>
</settings>
我們挑其中常用的重要配置項來看下。
localRepository配置項用來配置maven的本地倉庫地址,簡單說就是用來存儲通過maven下載下來的各種jar包。如果我們的項目pom.xml文件依賴了某個jar包,默認會先從我們本地倉庫去查找,查不到的請求下,再去請求外部倉庫。
該配置的默認值是:
${user.home}/.m2/repository
${user.home}指用戶的主目錄,比如我的就是C:\Users\xt
如果我們想節(jié)省C盤的空間,想把jar包存儲到其他磁盤,可以這么設置
<localRepository>D:/programs/.m2/repository</localRepository>
該配置項主要是用來為各個遠程倉庫配置認證信息,比如訪問遠程倉庫時需要提供用戶名和密碼信息,它的結構如下:
<servers>
<server>
<id>deploymentRepo</id>
<username>repouser</username>
<password>repopwd</password>
</server>
<server>
<id>deploymentRepo2</id>
<privateKey>/path/to/private/key</privateKey>
<passphrase>ddddd</passphrase>
</server>
</servers>
結點下面可以有多個結點,其中server結點下的子結點釋義如下:
• id,對應repository或mirror的id,用來指定該配置項是針對哪個倉庫的,必填項
• username,訪問倉庫的用戶名
• password,訪問倉庫的密碼
• privateKey,訪問倉庫的私鑰
• passphrase,訪問倉庫的口令,可選
其中username和password成對出現(xiàn),privateKey和passphrase成對出現(xiàn)。兩種認證方式不同,我們配置時只需要選取其中一種就可以。常用的就是配置用戶名和密碼。
mirrors配置項主要是用來為遠程倉庫配置鏡像站點,我們可以基于以下情況來考慮使用mirrors鏡像配置。
• 分擔遠程倉庫的訪問壓力,同時又不希望修改repoistory倉庫的配置
• 用自己的內部倉庫替換掉特定的倉庫,比如替換掉central倉庫
mirrors的結構如下:
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<name>Nexus aliyun</name>
<mirrorOf>central</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
結點下面可以包含多個子結點,其中mirror結點下面的子結點釋義如下:
• id,鏡像倉庫的id,要保證唯一,不能和mirrors和repositories下面的id相同,因為鏡像倉庫本質上也是倉庫,下載jar包時,會根據此id去servers結點下面查找server結點配置的認證信息
• name,鏡像倉庫的名稱,方便用戶識別該倉庫
• mirrorOf,需要做鏡像的倉庫的id值,也就是取repository的id值
• url,鏡像倉庫的地址
關于此段配置,我們一般會用來替換maven的central倉庫,mirrorOf的值就寫成central,url的值配置為阿里云maven倉庫地址或者公司內網的maven倉庫地址。
profiles配置項用來配置我們常用的倉庫,而且可以對這些倉庫進行分類,在特定的條件下使特定類別的倉庫生效,當然也可以默認指定使用某些倉庫。
注意:官方更推薦在pom.xml文件中定義profiles
profiles的結構如下:
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
</repositories>
<pluginRepositories>
<pluginRepository>
</pluginRepository>
</pluginRepositories>
</profile>
<profile>
<id>test</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<repositories>
</repositories>
<pluginRepositories>
<pluginRepository>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
結點下面可以有多個結點,我們就是通過profile結點對倉庫進行分類。profile結點的子節(jié)點釋義如下:
• id,標識profile,單個文件中的profile的id值要保證唯一,后續(xù)靠這個值來激活對應的profile
• activation,自動激活相關的配置,其中它的子節(jié)點activeByDefault配置為true,則默認激活當前的profile
• repositories,倉庫列表配置
• pluginRepositories,插件倉庫列表配置
repositories和pluginRepositories這兩部分包含內容較多,我們分開來看
repositories用來配置各個倉庫的信息。之所以有這樣的設計,其中一個原因就是我們平時開發(fā)所需的jar包可能分散在不同的倉庫里,由于倉庫之間是獨立的,如果把所有的包都維護在一個倉庫,本身也會影響倉庫的性能,所以這時就需要結合多個倉庫來使用了。
repositories結構如下:
<repositories>
<repository>
<id>dev</id>
<name>開發(fā)倉庫</name>
<releases>
<enabled>false</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
</snapshots>
<url>http://192.168.1.1/repository/dev</url>
</repository>
</repositories>
結點下面有多個repository結點,repository結點下面的子節(jié)點釋義如下:
• id,倉庫的id,需要全局唯一,也不能和mirror的id相同
• name,倉庫的名稱,隨便起,只是方便我們識別倉庫
• releases,發(fā)布版本的配置
• snapshots,快照版本的配置
• enabled,true或false,代表該倉庫對指定類型(releases或snapshots)的版本的jar包是否有效,b比如releases下面的enabled如果是true,那么下載發(fā)布版本的jar包就可以使用到該倉庫。
• updatePolicy,是指更新策略,alway代表每次下載jar包都從遠程倉庫下載并更新本地jar包;daliy是默認值,指每天下載jar包都會去遠程下載并更新一次本地的jar包。never指的是只要本地有jar包,就一直使用本地的。針對snapshots的配置,我們一般會設置為always
• url,倉庫的地址
pluginRepositories是指插件倉庫,用來管理我們使用到maven插件的倉庫。我們平時使用的jar包一般分兩種,一類就是這種jar包需要被別的項目依賴,另一種jar包就是maven自身使用到的jar包,也叫插件。maven官方針對這兩類jar包,就給出了pluginRepositories和repositories這兩類的配置。而repositories就配置我們項目開發(fā)常用的彼此之間存在依賴的jar包所在的倉庫。
pluginRepositories的結構如下:
<pluginRepositories>
<pluginRepository>
<id>testPluginRepo</id>
<name>測試插件倉庫</name>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<url>http://192.168.1.1/repository/testPlugin/</url>
</pluginRepository>
</pluginRepositories>
pluginRepositories結點下可以有多個pluginRepository結點,pluginRepository結點下的子節(jié)點的釋義和repository的一樣,此處就不再重復了。
activeProfiles配置項用來指定哪些profile生效,它的結構如下:
<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>
activeProfiles結點下面可以多個activeProfile結點,activeProfile對應的值就是profile的id。
上一篇:maven安裝及配置教程步驟詳解
下一篇:返回列表