经常见我们除了需要官方的仓库以外,更多是配置了国内的阿里云公共仓库。但很多的企业会有自己的公共组件,两者会结合起来使用,就需要配置公司的私服。
而经常性的,我们会在 apache-maven-3.8.6\conf\settings.xml 中,标签中配置自己的仓库地址,这样的确起到了配置仓库的效果。
但是当我们在标签中配置多个mirror时,mirrorOf不能配置 . ,意思就是(根据mirrorOf和repository的id)匹配所有的库(repository),这样就是说如果你需要某个jar,他会从镜像地址去下载这个jar。不管你配置了多少个库,即使这些库的地址不一样,仍然会从镜像地址访问。
即:
<mirrorOf>*</mirrorOf>
匹配所有仓库请求,即将所有的仓库请求都转到该镜像上<mirrorOf>repo1,repo2</mirrorOf>
将仓库repo1和repo2的请求转到该镜像上,使用逗号分隔多个远程仓库。 <mirrorOf>*,!repo1</miiroOf>
匹配所有仓库请求,repo1除外,使用感叹号将仓库从匹配中排除。
这样的配置就比较麻烦,正常情况下我们只需要在项目拉取完毕的时候执行一次就可以了。
下面就提供另外一种配置多仓库多私服的方式!
我们不在标签中配置了。直接全部注释掉,然后到最后的标签中,创建多个profile即可。如下:
<profiles><!-- 部分注释代码已去除。 --><profile><id>jdk-1.8</id><activation><activeByDefault>true</activeByDefault><jdk>1.8</jdk></activation><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion></properties></profile><profile><id>aliyun</id><repositories><repository><id>aliyun</id><url>https://maven.aliyun.com/repository/public</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots></repository></repositories></profile><profile><id>nexus</id><repositories><repository><id>nexus</id><url>https://nexus.xxx.cn/repository/maven-group-warehouse/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots></repository></repositories></profile></profiles>
这种情况下,我们直接打开idea工具,在配置号maven的情况下,在右侧的maven区域的Profiles里面,就会多出现aliyun和nexus两个选项,对应到上面配置文件中的id。此时,我们在按照项目打包的时候,就可以按照我们的需要,自行勾选一下对应的仓库即可,无论多少个私服都可以这样去配置。
部分非主要内容参考借用了: https://blog.csdn.net/u014641168/article/details/123862963