x-SNAPSHOT.jar上传nexus成功,下载失败
两个项目:项目a与项目b
项目b需要引入项目a的 a-api.jar。
dependency信息
<!-- b/ pom.xml -->
<!-- 引入项目a的api -->
<groupId>com.wsy.a</groupId>
<artifactId>a-api</artifactId>
<version>1.0-SNAPSHOT</version>
a-api.jar已经deploy至nexus中,但是b中引入失败。
问题定位:
第一步:
cd
至项目b目录下,使用mvn install -X
查看详细构建日志,验证
- 读取的配置文件没有问题;
- mirror中的镜像地址没有问题,是我的nexus地址;
第二步:
再次去nexus中查看,地址 ip:port/repository/maven-public/
可在浏览器中直接打开,上面确实是有a-api.jar
文件
第三步:
继续看mvn install -X
的日志信息,发现查找的库始终是central
,没有去查分组中的maven-snapshot
库,
在maven-public
重新加入maven-snapshot
库,并且刷新索引,然而还是没用。
第四步:
基本可以确认问题是
从nexus中下载snapshot包失败,猜想本地上传的jar都会下载失败。
搜索发现一句话
Maven内置的插件远程仓库配置,关闭了对SNAPSHOT的支持,防止不稳定的构建
所以需要添加对SNAPSHOT
的支持
怎么添加对SNAPSHOT的支持?
在 settings.xml 中设置属性 profiles --> profile --> repositories --> repository --> snapshots --> true
第五步
使用profile来定义仓库属性,增加对SNAPSHOT的支持
<!-- .m2/settings.xml -->
<!-- 去掉mirro配置,统一使用 profile repository 来管理远程仓康 -->
<profiles>
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>nexus-snapshots</id>
<url>http://ip:port/repository/maven-public/</url>
<!-- 添加对`SNAPSHOT`的支持 -->
<snapshots>
<enabled>true</enabled>
</snapshots>
<!-- 添加对`RELEASE`的支持 -->
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<!-- 与 profile.id 对应 -->
<activeProfile>nexus</activeProfile>
<!-- <activeProfile>aliyun</activeProfile> -->
</activeProfiles>
mvn install
成功构建
感悟:
纸上得来终觉浅,绝知此事要躬行。
只有当你会了,理解了,融会贯通了,才能感觉到豁然开朗。