SNAPSHOT包上传nexus成功,下载失败

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查看详细构建日志,验证

  1. 读取的配置文件没有问题;
  2. 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 成功构建

感悟:

纸上得来终觉浅,绝知此事要躬行。

只有当你会了,理解了,融会贯通了,才能感觉到豁然开朗。

原文地址:https://www.cnblogs.com/wangshuyu/p/15535753.html