refer to : https://blog.csdn.net/lisheng19870305/article/details/110952656
maven仓库配置
仓库优先级为:本地仓库(localRepositories) > profile中的repositories仓库 > POM > mirrors全局仓库
通过mirror配置
如果仓库X可以提供仓库Y所有的内容,那么我们就可以认为X是Y的一个镜像,通俗点说,可以从Y获取的构件都可以从他的镜像中进行获取。可以采用镜像的方式配置远程仓库,镜像在settings.xml中进行配置,在setting.xml中的
<mirror>
<id>aliyun-central</id>
<mirrorOf>central</mirrorOf>
<name>aliyun-central</name>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
可以看到,配置了上面的mirror后,maven是从aliyun仓库下载的jar包,不配置的时候,默认从apache的maven中央仓库下载的jar包。
上面提到,<mirrorOf></mirrorOf>
的设置很重要,比如上面我设置的mirrorOf为<mirrorOf>central</mirrorOf>
。
如果
这是因为maven默认内置了如下一个仓库,这个默认仓库的id为central,当我们把mirrorOf设置为
当然我们也可以把mirrorOf设置为
mirror地址,参考:https://developer.aliyun.com/mvn/guide?spm=a2c6h.13651104.0.0.43586e1atKfGSK
通过repositories配置
通过setting.xml方式配置会对所有maven项目生效,如果只想在本项目中配置一个maven仓库,可以通过在pom.xml中配置
在自己的maven项目的pom.xml中添加如下配置,就配置好了一个仓库。这时候,maven会优先采用这个配置,而不会去读setting.xml中的配置了。这样配置好后,maven就会自动从aliyun下载jar包了。
<repositories>
<repository>
<id>aliyun-releases</id>
<name>阿里云仓库(name可以随便起)</name>
<url>https://maven.aliyun.com/repository/public</url>
</repository>
</repositories>
上面配置<repository>
的<id>
似乎也没什么用,确实是,如果你只是在pom.xml中配置个仓库,这个id是没什么用的,可以随便写
其实这个id是配合上面讲的mirror一块使用的,还记得mirrorOf吗,我们配置mirrorOf为<mirrorOf>central</mirrorOf>
时,mirror中的url就是central仓库的url给覆盖了,所以这里的<repository>
标签下的id是给mirrorOf用的。
可以看下面一个例子,本来我们的abc-releases这个仓库是不可用的,因为根本就没有https://abc.def.com/repository/public/这个仓库
但是我们通过mirror配置,改变了id为abc-releases这个仓库的url,从而使用maven也可以从id为abc-releases这个仓库下载jar包了。当然这样配置也没只啥意义,只是为了方便理解repository和mirror之间的关系。
maven仓库配置的其他选项:
<!--releases和snapshots中有个enabled属性,是个boolean值,默认为true,
表示是否需要从这个远程仓库中下载稳定版本或者快照版本的构建,
一般使用第三方的仓库,都是下载稳定版本的构建。-->
<repository>
<id>aliyun-releases</id>
<url>https://maven.aliyun.com/repository/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
maven默认的内置仓库的配置位置
<!--
可以从以下文件中找到maven仓库的默认配置如下
apache-maven-3.6.1\lib\maven-model-builder-3.6.1.jar\org\apache\maven\model\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>