有时,应用中须要一些比较新的依赖,而这些依赖并无正式发布,仍是处于milestone或者是snapshot阶段,并不能从中央仓库或者镜像站上下载到。此时,就须要spring
自定义Maven的<repositories>
。maven
<repositories>
以Spring应用程序程序为例,须要添加一个Spring Security 5.2.0.BUILD-SNAPSHOT版本的依赖,惋惜这是个snapshot,并不在镜像站中。url
解决方法就是在pom.xml添加一个snapshot的地址:code
<!-- Spring Snapshots仓库 --> <repositories> <repository> <id>spring-snapshots</id> <name>Spring Snapshots</name> <url>https://repo.spring.io/snapshot</url> </repository> </repositories>
这样,就能从这个仓库中,获取到 Spring Security 5.2.0.BUILD-SNAPSHOT版本的依赖了。xml
但有时,跟着上面的设置方法并不奏效,仍然仍是从以前的镜像站中去下载。此时,咱们须要去检查下 Maven 安装目录下的settings.xml:get
<mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
能够看到,在设置镜像时,mirrorOf设置为了“*”,意味全部的依赖都是从这个镜像上下载。彻底不给Spring Snapshots机会了。同步
解决方法也简单,改成下面的方式:it
<mirror> <id>nexus-aliyun</id> <mirrorOf>*,!spring-snapshots</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
mirrorOf设置为了“*,!spring-snapshots”,意味除了Spring Snapshots外,全部的依赖都是从这个镜像上下载。这样就能下载到 Spring Snapshots了。io
如下是mirrorOf的详细解释。class
mirrorOf的配置支持以下场景:
*
:全部依赖;
external:*
:全部再也不本地和不是基于文件的依赖;
repo,repo1
:全部来自repo或者repo1仓库的依赖;
*,!repo1
:除了repo1外的全部依赖。即上面示例中的场景。