在项目中使用Maven管理JAR包依赖,往往会出现以下状况:

1、国内访问maven默认远程中央镜像特别慢;使用阿里的镜像替代远程中央镜像;

2、阿里云镜像中缺少部分JAR包;同时使用私有仓库和公有仓库;

Maven的中央仓库很强大,绝大多数的JAR包都收录了,但也有未被收录的。遇到未收录的JAR包时,就会编译报错。

针对以上情况,我们就需要让Maven支持多仓库配置。


单独仓库配置

当只配置一个仓库时,操作比较简单,直接在Maven的settings.xml文件中进行全局配置即可,以阿里云的镜像为例:

<mirrors>

<mirror>

<id>alimaven</id>

<name>aliyun maven</name>

<url>http://maven.aliyun.com/nexus/content/groups/public/</url>

<mirrorOf>central</mirrorOf>

</mirror>

</mirrors>

只用新增一个mirror配置即可。要做到单一仓库,设置mirrorOf到*。

mirrorOf中配置的星号,表示匹配所有的artifacts,也就是everything使用这里的代理地址。上面的mirrorOf配置了具体的名字,指的是repository的名字。mirrorOf 设置为central,则会覆盖maven里默认的远程仓库。

镜像配置说明:

1、id: 镜像的唯一标识;

2、name: 名称描述;

3、url: 地址;

4、mirrorOf: 指定镜像规则,什么情况下从镜像仓库拉取。其中,

*: 匹配所有,所有内容都从镜像拉取;

external:*: 除了本地缓存的所有从镜像仓库拉取;

repo,repo1: repo或者repo1,这里的repo指的仓库ID;

*,!repo1: 除了repo1的所有仓库;

多仓库配置方式一:全局多仓库设置

全局多仓库设置,是通过修改maven的setting文件实现的。

设置思路:在setting文件中添加多个profile(也可以在一个profile中包含很多个仓库),并激活。即使是只有一个可用的profile,也需要激活。

修改maven的setting文件,设置两个仓库(以此类推,可以添加多个):

<profiles>

<profile>

<!-- id必须唯一 -->

<id>myRepository1</id>

<repositories>

<repository>

<!-- id必须唯一 -->

<id>myRepository1_1</id>

<!-- 仓库的url地址 -->

<url>http://maven.aliyun.com/nexus/content/groups/public/</url>

<releases>

<enabled>true</enabled>

</releases>

<snapshots>

<enabled>true</enabled>

<updatePolicy>always</updatePolicy>

</snapshots>

</repository>

</repositories>

</profile>

<profile>

<!-- id必须唯一 -->

<id>myRepository2</id>

<repositories>

<repository>

<!-- id必须唯一 -->

<id>myRepository2_1</id>

<!-- 仓库的url地址 -->

<url>http://repository.jboss.org/nexus/content/groups/public-jboss/</url>

<releases>

<enabled>true</enabled>

</releases>

<snapshots>

<enabled>true</enabled>

<updatePolicy>always</updatePolicy>

</snapshots>

</repository>

</repositories>

</profile>

</profiles>

通过配置activeProfiles子节点激活:

<activeProfiles>

<!-- 激活myRepository1 -->

<activeProfile>myRepository1</activeProfile>

<!-- 激活myRepository2 -->

<activeProfile>myRepository2</activeProfile>

</activeProfiles>

此时如果是在Idea中使用了本地的Maven配置,那么在项目的Maven管理中会看到类似如下图中的profile选项。

maven配置阿里云仓库是否成功(maven配置本地仓库的方法)(1)

多仓库配置方式二:在项目中添加多个仓库

在项目中添加多个仓库,是通过修改项目中的pom文件实现的。

思路:在项目中pom文件的repositories节点(如果没有手动添加)下添加多个repository节点,每个repository节点是一个仓库。

修改项目中pom文件,设置两个仓库(以此类推,可以添加多个):

<repositories>

<repository>

<!-- id必须唯一 -->

<id>jboss-repository</id>

<!-- 见名知意即可 -->

<name>jboss repository</name>

<!-- 仓库的url地址 -->

<url>http://repository.jboss.org/nexus/content/groups/public-jboss/</url>

</repository>

<repository>

<!-- id必须唯一 -->

<id>aliyun-repository</id>

<!-- 见名知意即可 -->

<name>aliyun repository</name>

<!-- 仓库的url地址 -->

<url>http://maven.aliyun.com/nexus/content/groups/public/</url>

</repository>

</repositories>

这里的id就是mirrorOf要使用的ID。

maven配置阿里云仓库是否成功(maven配置本地仓库的方法)(2)

注:以上两种方式的id值均不可以为“central”,因为central表示该配置为中央库的镜像。