maven3.6.1java
開發工具ideaweb
jdk1.8spring
maven是如何找到咱們依賴的jar的express
什麼是倉庫apache
倉庫的分類json
各類類型倉庫詳解服務器
maven中遠程倉庫配置詳解網絡
關於構件版本問題說明架構
構件文件的佈局mvc
在maven出現以前,項目中用到第三方jar包時,咱們會把這些依賴的jar包拷貝到項目的lib目錄中,若是咱們開發了多個項目,這些jar包在各個項目目錄中都有一份拷貝,這存在的一些問題:
不方便jar包的管理,好比jar的升級、刪除等操做
對磁盤空間的重複佔用
主要仍是不方便jar包的管理,maven很好的解決了這些問題,咱們來看看maven管理依賴jar包的效果。
我來提幾個問題,帶着問題來看本篇內容
maven是如何將依賴的jar引入項目的?
maven項目中依賴的jar是從哪裏獲取的?
咱們如何掌控這些jar的獲取方式?
maven是如何組織管理構件的?
建立一個maven項目,打開idea,點擊File->New->Project,選擇Maven,以下:
點擊Next,輸入項目座標信息,以下:
點擊Next,輸入Project name 爲maven-chat03,以下:
點擊Finish,建立成功,以下:
咱們看一下這個項目佔用的磁盤大小:
佔用 29.9KB,下面咱們在pom.xml中引入fastjson的依賴:
<dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.62</version> </dependency> </dependencies>
建立一個Demo.java,以下
package com.javacode2018; import com.alibaba.fastjson.JSON; public class Demo1 { public static void main(String[] args) { System.out.println(JSON.class); } }
運行一下Demo1,輸出:
class com.alibaba.fastjson.JSON
說明fastjson在項目中起效了,咱們再來看一下項目的大小
上面一次是39kb,此次是49kb,大小增長了10KB,咱們來看一下fastjson.jar的大小
這個jar包643kb,可是項目才49kb,這說明了什麼?
說明了項目目錄中沒有包含這個jar包,只是對這個jar包作了一個引用。
若是系統中有不少項目,都採用同一個maven來引用依賴的jar包,那麼這些jar只會在磁盤中存儲一份,這些jar能夠被其餘全部的maven項目共享,項目只須要在pom.xml中經過maven座標的方式來對這些jar進行引用,而不用再拷貝至項目中,若對jar包進行刪除、升級版本直接修改pom.xml就能夠了,很是方便。
結論:maven採用引用的方式將依賴的jar引入進來,不對真實的jar進行拷貝,可是打包的時候,運行須要用到的jar都會被拷貝到安裝包中。
咱們能夠看到,當咱們項目中須要使用某些jar時,只須要將這些jar的maven座標添加到pom.xml中就能夠了,這背後maven是如何找到這些jar的呢?
maven官方爲咱們提供了一個站點,這個站點中存放了不少第三方經常使用的構建(jar、war、zip、pom等等),當咱們須要使用這些構件時,只需將其座標加入到pom.xml中,此時maven會自動將這些構建下載到本地一個目錄,而後進行自動引用。
上面提到的maven站點,咱們叫作maven中央倉庫,本地目錄叫作本地倉庫。
默認狀況下,當項目中引入依賴的jar包時,maven先在本地倉庫檢索jar,若本地倉庫沒有,maven再去從中央倉庫尋找,而後從中央倉庫中將依賴的構件下載到本地倉庫,而後纔可使用,若是2個地方都沒有,maven會報錯。
下面咱們來看看什麼是倉庫?
在 Maven 中,任何一個依賴、插件或者項目構建的輸出,均可以稱之爲構件。
在 Maven 中,倉庫是一個位置,這個位置是用來存放各類第三方構件的,全部maven項目能夠共享這個倉庫中的構件。
Maven 倉庫能幫助咱們管理構件(主要是jar包),它就是放置全部jar文件(jar、war、zip、pom等等)的地方。
主要分爲2大類:
本地倉庫
遠程倉庫
而遠程倉庫又分爲:中央倉庫、私服、其餘公共遠程倉庫
當maven根據座標尋找構件的時候,會首先查看本地倉庫,若是本地倉庫存在,則直接使用;若是本地不存在,maven會去遠程倉庫中查找,若是找到了,會將其下載到本地倉庫中進行使用,若是本地和遠程倉庫都沒有找到構件,maven會報錯,構件只有在本地倉庫中存在了,纔可以被maven項目使用。
默認狀況下,maven本地倉庫默認地址是/.m2/respository目錄,這個默認咱們也能夠在/.m2/settings.xml文件中進行修改:
<localRepository>本地倉庫地址</localRepository>
當咱們使用maven的時候,依賴的構件都會從遠程倉庫下載到本地倉庫目錄中。
Maven 的本地倉庫,在安裝 Maven 後並不會建立,當咱們執行第一條 maven 命令的時候本地倉庫纔會建立,此時會從遠程倉庫下載構建到本地倉庫給maven項目使用。
須要咱們注意,默認狀況下,/.m2/settings.xml這個文件是不存在的,咱們須要從Maven安裝目錄中拷貝conf/settings.xml文件,將M2_HOME/conf/settings.xml拷貝到/.m2目錄中,而後對/.m2/settings.xml進行編輯,M2_HOME/config/settings.xml這個文件其實也是可使用的,不過咱們不建議直接使用,這個修改可能會影響其餘全部使用者,還有修改了這個文件,也不利於之後maven的升級,若是咱們使用/.m2/settings.xml,而maven安裝目錄中的配置不動,升級的時候只須要替換一下安裝包就行了,因此咱們建議將maven安裝目錄中的settings.xml拷貝到~/.m2中進行編輯,這個是用戶級別的,只會影響當前用戶。
最開始咱們使用maven的時候,本地倉庫中的構件是空的,此時maven必需要提供一種功能,要可以從外部獲取這些構件,這個外部就是所謂的遠程倉庫,遠程倉庫能夠有多個,當本地倉庫找不到構件時,能夠去遠程倉庫找,而後放置到本地倉庫中進行使用。
因爲maven剛安裝好的時候,本地倉庫是空的,此時咱們什麼都沒有配置,去執行maven命令的時候,咱們會看到maven默認執行了一些下載操做,這個下載地址就是中央倉庫的地址,這個地址是maven社區爲咱們提供的,是maven內置的一個默認的遠程倉庫地址,不須要用戶去配置。
這個地址在maven安裝包的什麼地方呢?
咱們使用的是3.6.1,在下面這個位置
apache-maven-3.6.1\lib\maven-model-builder-3.6.1.jar\org\apache\maven\model\pom-4.0.0.xml
在pom-4.0.0.xml中,以下:
<repositories> <repository> <id>central</id> <name>Central Repository</name> <url>https://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
就是:
https://repo.maven.apache.org/maven2
能夠去訪問一下,以下:
上面站點中包含了不少經常使用的構建。
中央倉庫有幾個特色:
中央倉庫是由maven官方社區提供給你們使用的
不須要咱們手動去配置,maven內部集成好了
使用中央倉庫時,機器必須是聯網狀態,須要能夠訪問中央倉庫的地址
中央倉庫還爲咱們提供了一個檢索構件的站點:
很是方便咱們查找須要依賴的構件,你們能夠去體驗一下。
中央倉庫中包含了這個世界上大多數流行的開源java構件,基本上全部的jave開發者都會使用這個倉庫,通常咱們須要的第三方構件在這裏均可以找到。
私服也是遠程倉庫中的一種,咱們爲何須要私服呢?
若是咱們一個團隊中有幾百我的在開發一些項目,都是採用maven的方式來組織項目,那麼咱們每一個人都須要從遠程倉庫中把須要依賴的構件下載到本地倉庫,這對公司的網絡要求也比較高,爲了節省這個寬帶和加快下載速度,咱們在公司內部局域網內部能夠架設一臺服務器,這臺服務器起到一個代理的做用,公司裏面的全部開發者去訪問這個服務器,這臺服務器將須要的構建返回給咱們,若是這臺服務器中也沒有咱們須要的構建,那麼這個代理服務器會去遠程倉庫中查找,而後將其先下載到代理服務器中,而後再返回給開發者本地的倉庫。
還有公司內部有不少項目之間會相互依賴,你多是架構組的,你須要開發一些jar包給其餘組使用,此時,咱們能夠將本身jar發佈到私服中給其餘同事使用,若是沒有私服,可能須要咱們手動發給別人或者上傳到共享機器中,不過管理起來不是很方便。
整體上來講私服有如下好處:
加速maven構件的下載速度
節省寬帶
方便部署本身的構件以供他人使用
提升maven的穩定性,中央倉庫須要本機可以訪問外網,而若是採用私服的方式,只須要本機能夠訪問內網私服就能夠了。
中央倉庫是在國外的,訪問速度不是特別快,因此有不少比較大的公司作了一些好事,本身搭建了一些maven倉庫服務器,公開出來給其餘開發者使用,好比像阿里、網易等等,他們對外提供了一些maven倉庫給全球開發者使用,在國內的訪問速度相對於maven中央倉庫來講仍是快了很多。
還有一些公司比較牛,只在本身公開的倉庫中發佈構件,這種狀況若是要使用他們的構件時,須要去訪問他們提供的遠程倉庫地址。
咱們來看一下構件在倉庫的文件結構中是如何組成的?
這塊咱們以本地倉庫來作說明,遠程倉庫中組織構件的方式和本地倉庫是同樣的,以fastjson在本地倉庫中的信息爲例來作說明,以下:
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.62</version> </dependency>
上面是fastjson 1.2.62這個jar,咱們看一下這個jar在本地倉庫中的位置,以下圖
fastjson這個jar的地址是:
~\.m2\repository\com\alibaba\fastjson\1.2.62\fastjson-1.2.62.jar
~.m2\repository\是倉庫的目錄,全部本地構件都位於該目錄中,咱們主要看一下後面的部分,是怎麼構成的。
構件所在目錄的構成以下:
groupId+"."+artifactId+"."+版本號
經過上面獲取一個字符串,字符串由groupId、artifactId、版本號之間用.鏈接,而後將這個字符串中的.替換爲文件目錄分隔符而後建立多級目錄。
而構件文件名稱的組成以下:
[artifactId][-verion][-classifier].[type]
上面的fastjson-1.2.62.jar信息以下:
artifactId爲fastjson version爲1.2.62 classifier爲空 type沒有指定,默認爲jar
因此構件文件名稱爲fastjson-1.2.62.jar。
平時咱們開發項目的時候,打包測試,或者將本身開發的構建提供給他人使用時,中間咱們反反覆覆的打包測試,會給使用方提供不少不穩定的版本,最終通過同事和測試反覆驗證修改,咱們會發佈一個穩定的版本。
在發佈穩定版本以前,會有不少個不穩定的測試版本,咱們版本咱們稱爲快照版本,用SNAPSHOT表示,回頭去看看本文開頭搭建的maven-cha03的pom.xml文件,默認是快照版本的,以下:
<version>1.0-SNAPSHOT</version>
version以-SNAPSHOT結尾的,表示這是一個不穩定的版本,這個版本咱們最好只在公司內部測試的時候使用,最終發佈的時候,咱們須要將-SNAPSHOT去掉,而後發佈一個穩定的版本,表示這個版本是穩定的,能夠直接使用,這種穩定的版本咱們叫作release版本。
當咱們想控制構件獲取的遠程地址時,咱們該怎麼作呢?此時須要使用遠程倉庫的配置功能。
此處咱們講解2種方式。
pom.xml中配置遠程倉庫,語法以下:
<project> <repositories> <repository> <id>aliyun-releases</id> <url>https://maven.aliyun.com/repository/public</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> </project>
在repositories元素下,可使用repository子元素聲明一個或者多個遠程倉庫。
repository元素說明:
id:遠程倉庫的一個標識,中央倉庫的id是central,因此添加遠程倉庫的時候,id不要和中央倉庫的id重複,會把中央倉庫的覆蓋掉
url:遠程倉庫地址
releases:主要用來配置是否須要從這個遠程倉庫下載穩定版本構建
snapshots:主要用來配置是否須要從這個遠程倉庫下載快照版本構建
releases和snapshots中有個enabled屬性,是個boolean值,默認爲true,表示是否須要從這個遠程倉庫中下載穩定版本或者快照版本的構建,通常使用第三方的倉庫,都是下載穩定版本的構建。
快照版本的構建以-SNAPSHOT結尾,穩定版沒有這個標識。
示例
來感覺一下pom方式配置遠程倉庫的效果。
文本編輯器打開maven-chat03/pom.xml,將下面內容貼進去:
<?xml version="1.0" encoding="UTF-8"?> <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> <groupId>com.javacode2018</groupId> <artifactId>maven-chat03</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.62</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.2.1.RELEASE</version> </dependency> </dependencies> <repositories> <repository> <id>aliyun-releases</id> <url>https://maven.aliyun.com/repository/public</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> </project>
上面咱們配置了一個遠程倉庫,地址是阿里雲的maven倉庫地址,releases的enabled爲true,snapshots的enabled爲false,表示這個遠程倉庫咱們只容許下載穩定版本的構件,而不能從這個倉庫中下載快照版本的構建。
刪除本地倉庫中如下幾個目錄:
~\.m2\repository\org\springframework ~\.m2\repository\com\alibaba
maven-chat03項目目錄中打開cmd運行:
mvn compile
輸出以下:
D:\code\IdeaProjects\maven-chat03>mvn compile [INFO] Scanning for projects... [INFO] [INFO] -------------------< com.javacode2018:maven-chat03 >-------------------- [INFO] Building maven-chat03 1.0-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- Downloading from aliyun-releases: https://maven.aliyun.com/repository/public/org/springframework/boot/spring-boot-starter-web/2.2.1.RELEASE/spring-boot-starter-web-2.2.1.RELEASE.pom Downloaded from aliyun-releases: https://maven.aliyun.com/repository/public/org/springframework/boot/spring-boot-starter-web/2.2.1.RELEASE/spring-boot-starter-web-2.2.1.RELEASE.pom (3.3 kB at 5.1 kB/s) Downloading from aliyun-releases: https://maven.aliyun.com/repository/public/org/springframework/boot/spring-boot-starters/2.2.1.RELEASE/spring-boot-starters-2.2.1.RELEASE.pom Downloaded from aliyun-releases: https://maven.aliyun.com/repository/public/org/springframework/boot/spring-boot-starters/2.2.1.RELEASE/spring-boot-starters-2.2.1.RELEASE.pom (1.8 kB at 8.0 kB/s) Downloading from aliyun-releases: https://maven.aliyun.com/repository/public/org/springframework/boot/spring-boot-parent/2.2.1.RELEASE/spring-boot-parent-2.2.1.RELEASE.pom Downloaded from aliyun-releases: https://maven.aliyun.com/repository/public/org/springframework/boot/spring-boot-parent/2.2.1.RELEASE/spring-boot-parent-2.2.1.RELEASE.pom (1.8 kB at 8.6 kB/s) Downloaded from aliyun-releases: https://maven.aliyun.com/repository/public/org/springframework/spring-expression/5.2.1.RELEASE/spring-expression-5.2.1.RELEASE.jar (282 kB at 82 kB/s) Downloaded from aliyun-releases: https://maven.aliyun.com/repository/public/org/springframework/spring-webmvc/5.2.1.RELEASE/spring-webmvc-5.2.1.RELEASE.jar (946 kB at 219 kB/s) Downloaded from aliyun-releases: https://maven.aliyun.com/repository/public/org/springframework/spring-beans/5.2.1.RELEASE/spring-beans-5.2.1.RELEASE.jar (684 kB at 56 kB/s) [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven-chat03 --- [WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent! [INFO] Copying 0 resource [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ maven-chat03 --- [INFO] Changes detected - recompiling the module! [WARNING] File encoding has not been set, using platform encoding GBK, i.e. build is platform dependent! [INFO] Compiling 1 source file to D:\code\IdeaProjects\maven-chat03\target\classes [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 24.079 s [INFO] Finished at: 2019-11-12T15:33:27+08:00 [INFO] ------------------------------------------------------------------------
輸出中有不少Downloaded from aliyun-releases,Downloaded from後面跟的aliyun-releases就是上面咱們在pom.xml中配置的遠程倉庫repository元素中的id,後面還能夠看到不少下載地址,這個地址就是咱們上面在pom.xml中指定的遠程倉庫的地址,能夠看到項目中依賴的構建從咱們指定的遠程倉庫中下載了。
pom中配置遠程倉庫的方式只對當前項目起效,若是咱們須要對全部項目起效,咱們能夠下面的方式2,向下看。
鏡像的方式
若是倉庫X能夠提供倉庫Y全部的內容,那麼咱們就能夠認爲X是Y的一個鏡像,通俗點說,能夠從Y獲取的構件均可以從他的鏡像中進行獲取。
能夠採用鏡像的方式配置遠程倉庫,鏡像在settings.xml中進行配置,對全部使用該配置的maven項目起效,配置方式以下:
<mirror> <id>mirrorId</id> <mirrorOf>repositoryId</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://my.repository.com/repo/path</url> </mirror>
mirrors元素下面能夠有多個mirror元素,每一個mirror元素表示一個遠程鏡像,元素說明:
id:鏡像的id,是一個標識
name:鏡像的名稱,這個至關於一個描述信息,方便你們查看
url:鏡像對應的遠程倉庫的地址
mirrorOf:指定哪些遠程倉庫的id使用這個鏡像,這個對應pom.xml文件中repository元素的id,就是表示這個鏡像是給哪些pom.xml文章中的遠程倉庫使用的,這裏面須要列出遠程倉庫的id,多個之間用逗號隔開,*表示給全部遠程倉庫作鏡像
這裏主要對mirrorOf再作一下說明,上面咱們在項目中定義遠程倉庫的時候,pom.xml文件的repository元素中有個id,這個id就是遠程倉庫的id,而mirrorOf就是用來配置哪些遠程倉庫會走這個鏡像去下載構件。
mirrorOf的配置有如下幾種:
<mirrorOf>*</mirrorOf>
上面匹配全部遠程倉庫id,這些遠程倉庫都會走這個鏡像下載構件
<mirrorOf>遠程倉庫1的id,遠程倉庫2的id</mirrorOf>
上面匹配指定的倉庫,這些指定的倉庫會走這個鏡像下載構件
<mirrorOf>*,! repo1</mirrorOf>
上面匹配全部遠程倉庫,repo1除外,使用感嘆號將倉庫從匹配中移除。
須要注意鏡像倉庫徹底屏蔽了被鏡像的倉庫,因此當鏡像倉庫沒法使用的時候,maven是沒法自動切換到被鏡像的倉庫的,此時下載構件會失敗,這個須要瞭解。
示例
將maven-chat03中的pom.xml修改成:
<?xml version="1.0" encoding="UTF-8"?> <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> <groupId>com.javacode2018</groupId> <artifactId>maven-chat03</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.62</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.2.1.RELEASE</version> </dependency> </dependencies> </project>
修改~/.m2/settings.xml,加入鏡像配置,以下:
<mirrors> <mirror> <id>mirror-aliyun-releases</id> <mirrorOf>*</mirrorOf> <name>阿里雲maven鏡像</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> </mirrors>
上面配置了一個阿里雲的鏡像,注意鏡像的id是mirror-aliyun-releases
下面咱們就來驗證一下鏡像的效果。
刪除本地倉庫中的如下幾個目錄:
~\.m2\repository\org\springframework ~\.m2\repository\com\alibaba
maven-chat03項目目錄中打開cmd運行:
mvn compile
輸出以下:
D:\code\IdeaProjects\maven-chat03>mvn compile [INFO] Scanning for projects... [INFO] [INFO] -------------------< com.javacode2018:maven-chat03 >-------------------- [INFO] Building maven-chat03 1.0-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- Downloading from mirror-aliyun-releases: https://maven.aliyun.com/repository/public/com/alibaba/fastjson/1.2.62/fastjson-1.2.62.pom Downloaded from mirror-aliyun-releases: https://maven.aliyun.com/repository/public/com/alibaba/fastjson/1.2.62/fastjson-1.2.62.pom (9.7 kB at 17 kB/s) Downloading from mirror-aliyun-releases: https://maven.aliyun.com/repository/public/org/springframework/boot/spring-boot-starter-web/2.2.1.RELEASE/spring-boot-starter-web-2.2.1.RELEASE.pom Downloaded from mirror-aliyun-releases: https://maven.aliyun.com/repository/public/org/springframework/boot/spring-boot-starter-web/2.2.1.RELEASE/spring-boot-starter-web-2.2.1.RELEASE.pom (3.3 kB at 15 kB/s) Downloading from mirror-aliyun-releases: https://maven.aliyun.com/repository/public/org/springframework/boot/spring-boot-starters/2.2.1.RELEASE/spring-boot-starters-2.2.1.RELEASE.pom Downloaded from mirror-aliyun-releases: https://maven.aliyun.com/repository/public/org/springframework/boot/spring-boot-starters/2.2.1.RELEASE/spring-boot-starters-2.2.1.RELEASE.pom (1.8 kB at 8.3 kB/s) Downloading from mirror-aliyun-releases: https://maven.aliyun.com/repository/public/org/springframework/boot/spring-boot-parent/2.2.1.RELEASE/spring-boot-parent-2.2.1.RELEASE.pom Downloaded from mirror-aliyun-releases: https://maven.aliyun.com/repository/public/org/springframework/boot/spring-boot-parent/2.2.1.RELEASE/spring-boot-parent-2.2.1.RELEASE.pom (1.8 kB at 8.2 kB/s) Downloading from mirror-aliyun-releases: https://maven.aliyun.com/repository/public/org/springframework/boot/spring-boot-dependencies/2.2.1.RELEASE/spring-boot-dependencies-2.2.1.RELEASE.pom Downloaded from mirror-aliyun-releases: https://maven.aliyun.com/repository/public/org/springframework/boot/spring-boot-dependencies/2.2.1.RELEASE/spring-boot-dependencies-2.2.1.RELEASE.pom (127 kB at 311 kB/s) Downloading from mirror-aliyun-releases: https://maven.aliyun.com/repository/public/org/springframework/spring-framework-bom/5.2.1.RELEASE/spring-framework-bom-5.2.1.RELEASE.pom [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven-chat03 --- [WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent! [INFO] Copying 0 resource [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ maven-chat03 --- [INFO] Nothing to compile - all classes are up to date [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 15.967 s [INFO] Finished at: 2019-11-12T16:44:57+08:00 [INFO] ------------------------------------------------------------------------
上面複製了部份內容,你們仔細看一下Downloaded from後面顯示的是mirror-aliyun-releases,這個和settings.xml中鏡像的id一致,表示咱們配置的鏡像起效了,全部依賴的構建都從鏡像來獲取了。
關於鏡像一個比較經常使用的用法是結合私服一塊兒使用,因爲私服能夠代理全部遠程倉庫(包含中央倉庫),所以對於maven用來來講,只需經過訪問一個私服就能夠間接訪問全部外部遠程倉庫了,這塊後面咱們會在私服中作具體說明。