欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > maven中如何配置多个仓库使其同时生效

maven中如何配置多个仓库使其同时生效

2024/11/30 6:55:55 来源:https://blog.csdn.net/zyh201314zyh/article/details/141901675  浏览:    关键词:maven中如何配置多个仓库使其同时生效

场景

有一个项目,我把代码跟本地maven依赖包从同事那里拷贝过来,然后打包却一直打不了,一直报aliyun仓库找不到这个依赖的错误,无论我改成引用本地仓库还是线上aliyun仓库都不行。

依赖

        <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId><version>2.1.0.M1</version></dependency>

原因

就是因为openfeign2.1.0.M1版本并不是Central(中央仓库)里的,而是Spring Milestones里的,而现在我的settings.xml中只配置了拉取Central仓库,所以对于Spring Milestones里面的依赖包肯定是拉取失败的。

Central、Spring Milestones、ICM的区别

如下图所示:https://mvnrepository.com中一共三种仓库。
Central:中央仓库,托管了大量的开源库及其依赖,可靠性和稳定性高,发布的库经过验证。
Spring Milestones:包含了Spring项目的最新进展,可能具有新特性但未经充分测试,可能会有不稳定的情况出现,不适合在生产环境中使用
ICM:并不是一个通用的公共Maven仓库,通常用于企业内部,以减少对外部网络的依赖或满足安全要求。

在这里插入图片描述

解决

1、修改settings.xml文件,同时支持两个仓库。

<mirrors><mirror><id>aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror><mirror><id>spring-milestones</id><name>Spring Milestones Repository</name><url>https://repo.spring.io/milestone</url><mirrorOf>*</mirrorOf></mirror>
</mirrors><profiles><profile><id>aliyun</id> <repositories><repository><id>aliyun</id> <url>https://maven.aliyun.com/repository/public</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>false</enabled> </snapshots></repository></repositories></profile><profile><id>spring-milestones</id><activation><activeByDefault>false</activeByDefault></activation><repositories><repository><id>spring-milestones</id><url>https://repo.spring.io/milestone</url><layout>default</layout><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></repository></repositories></profile>
</profiles>   <!--激活profile,activeProfile元素中指定profile的id-->
<activeProfiles><activeProfile>aliyun</activeProfile><activeProfile>spring-milestones</activeProfile>
</activeProfiles>

2、mvn clean install还是报错。

Could not transfer metadata commons-fileupload:commons-fileupload/maven-metadata.xml from/to spring-milestones (https://repo.spring.io/milestone): sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

原因:spring-milestones仓库在下载包的时候遇到了SSL证书验证问题。

3、修改settings.xml文件,spring-milestones仓库的profile跳过SSL认证。

   <profile><id>spring-milestones</id><activation><activeByDefault>false</activeByDefault></activation><repositories><repository><id>spring-milestones</id><url>https://repo.spring.io/milestone</url><layout>default</layout><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots><!--跳过SSL认证--><transportOptions><transportOption>http.nonProxyHosts=repo.spring.io</transportOption><transportOption>maven.wagon.http.ssl.insecure=true</transportOption><transportOption>maven.wagon.http.ssl.allowall=true</transportOption></transportOptions></repository></repositories></profile>

4、mvn clean install还是报错,没有跳过SSL认证,跟第2步报的错一样。
5、通过命令的形式来跳过SSL认证。

直接执行:mvn clean install -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true

6、执行后,过一会无论Central依赖包还是Spring Milestones依赖包,都可以下载成功。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com