0 下載依賴的過程
1 預設情況下maven會去中央倉庫central找依賴或外掛
- 無需額外配置
2 配置多個repository倉庫時會先查詢central倉庫再依此查詢多個repository倉庫
- 需要配置
<profile>
<id>myprofile1</id>
<!--依賴倉庫配置-->
<repositories>
<!--配置一個依賴倉庫-->
<repository>
<!--可以被mirrorOf攔截的id-->
<id>myrepo1</id>
<!--備註資訊-->
<name>xxx</name>
<url>https://xxx.xxx.xxx.xxx/xxx/xxxx</url>
<!--允許從此倉庫中下載realease版本依賴-->
<releases>
<enabled>true</enabled>
</releases>
<!--允許從此倉庫中下載snapshot版本依賴-->
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<!--配置一個依賴倉庫-->
<repository>
<id>myrepo2</id>
<name>xxx</name>
<url>http://xxx.xxx.xxx/xxx/xxx</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<!--外掛倉庫配置-->
<pluginRepositories>
<!--配置一個外掛倉庫-->
<pluginRepository>
<!--可以被mirrorOf攔截的id-->
<id>myrepo1</id>
<name>xxx</name>
<url>https://xxx.xxx.xxx.xxx/xxx/xxxx</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
<!--配置一個外掛倉庫-->
<pluginRepository>
<id>myrepo2</id>
<name>xxx</name>
<url>http://xxx.xxx.xxx/xxx/xxx</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
<!--使配置生效的兩種方式-->
<!--方式一(要放在profile標籤裡面的id標籤同級的位置)-->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<!--方式二-->
<activeProfiles>
<!--允許配置多個activeProfile-->
<activeProfile>myprofile1</activeProfile>
</activeProfiles>
3 配置mirror倉庫時會攔截指定的查詢請求轉向自身
- 需要配置
<mirror>
<id>myrepo01</id>
<!--備註資訊-->
<name>xxx</name>
<!--攔截對中央倉庫的請求-->
<mirrorOf>central</mirrorOf>
<url>https://xxx.xxx/xxx/xx/xx/xx/xx</url>
</mirror>
<mirror>
<id>myrepo02</id>
<!--備註資訊-->
<name>xxx</name>
<!--攔截對myrepo1倉庫的請求-->
<mirrorOf>myrepo1</mirrorOf>
<url>http://xxx.xx/xxx/x/x/x/x</url>
</mirror>
- 注意 mirrorOf支援萬用字元
<!--出現如下配置時 當去central下載依賴或外掛時會被<mirrorOf>central</mirrorOf>所在的mirror倉庫攔截(類似java過載 匹配更精確的)-->
<mirrorOf>*</mirrorOf>
<mirrorOf>central</mirrorOf>
4 建議配置方案
配置一箇中央倉庫的mirror倉庫
配置一個repository倉庫作為私服
5 上傳jar包到repository倉庫
- 1~4的配置僅對下載jar包有效,對上傳jar包無效
- 上傳的配置需要配置在專案的pom.xml中(在父pom中配置即可)
- 標籤配置在project標籤下
<distributionManagement>
<!--指定release版本的jar包上傳地址-->
<repository>
<id>mydeployrepo1</id>
<name>xxx</name>
<url>http://xxxxx.xxx.x/xxx</url>
</repository>
<!--指定snapshot版本的jar包上傳地址-->
<snapshotRepository>
<id>mydeployrepo2</id>
<name>xxx</name>
<url>http://x.xx.xxx.xxxxx/xxx</url>
</snapshotRepository>
</distributionManagement>
6 上傳jar包一般需要賬號密碼
- 密碼配置(配置在settings.xml中)
<servers>
<server>
<!--上傳jar包需要賬號密碼時會根據id獲取,因此要保證上傳地址的id與密碼的id一致-->
<id>mydeployrepo1</id>
<username>myaccountxx</username>
<password>xxx</password>
</server>
<server>
<id>mydeployrepo2</id>
<username>myxxaccount</username>
<password>xxxxx</password>
</server>
</servers>
7 其他注意事項
- 以上的這些配置中id標籤必須配置
- 以上的這些配置中name標籤可以不配置(類似備註資訊,沒有太大作用)
8 待整理雜項
maven中央倉庫
https://repo.maven.apache.org/maven2/ (預設使用)
https://repo1.maven.org/maven2/
阿里雲倉庫
https://maven.aliyun.com/repository/public
https://maven.aliyun.com/nexus/content/groups/public/
華為雲倉庫
https://repo.huaweicloud.com/repository/maven/
https://mirrors.huaweicloud.com/repository/maven/
騰訊雲倉庫
http://mirrors.cloud.tencent.com/nexus/repository/maven-public/
清華大學倉庫
https://repo.maven.apache.org/maven2/
scope標籤的值
complie---------fastjson.jar
complie階段可參與、test階段可參與、package階段可參與、執行時參與
runtime---------mysql-connection-java.jar
complie階段不可參與、test階段可參與、package階段可參與、執行時參與
provided----------servlet-api.jar
complie階段可參與、test階段可參與、package階段不可參與、執行時參與
test-------------junit.jar
complie階段不可參與、test階段可參與、package階段不可參與、執行時不參與
生命週期待研究
https://www.cnblogs.com/amigou/p/15751314.html
https://www.runoob.com/maven/maven-build-life-cycle.html
打包相關外掛待研究
https://blog.csdn.net/Ares5kong/article/details/128777500