Maven快照(snapshot)依赖无法下载

233 阅读1分钟

最近参与了一个新项目,项目采用了自己开发的framework,在工程pom文件中,采用继承方式使用framework,如下所示:

<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.ccc</groupId>
    <artifactId>ccc-framework</artifactId>
    <version>4.6.2.0-SNAPSHOT</version>
</parent>

<artifactId>ccc-shop</artifactId>
<version>4.6.2.0-SNAPSHOT</version>

通过git下载代码之后,对整个工程代码进行编译,提示:无法下载com.ccc:ccc-framework:4.6.2.0-SNAPSHOT,问题排查如下:

  1. 首先确认仓库中是否存在对应的依赖文件。
  • 打开工程配置的maven配置文件settings.xml文件,看到配置了镜像地址,如下。
<mirror>  
     <id>nexus</id>  
     <name>ccc nexus</name>  
     <url>http://nexus.ccc.com/repository/maven-public/</url>  
     <mirrorOf>external:*</mirrorOf>
</mirror>
  1. maven默认只下载release版本的依赖,如果对应自己开发上传的依赖,如果没有指定快照下载策略,则无法正常下载。解决方案:
  • 在settings.xml文件中配置一个profile,内容如下:
<profile>
      <id>dev</id>
      <repositories>
        <repository>
          <id>vchain</id>
          <url>http://nexus.ccc.com/repository/maven-public/</url>
          <releases>
            <enabled>true</enabled>
          </releases> 
          <snapshots>
            <!-- 这里配置了snapshot依赖下载策略:可以下载快照,每天更新下载一次快照文件 -->
            <enabled>true</enabled> 
            <updatePolicy>daily</updatePolicy>
          </snapshots>
        </repository>
      </repositories>
</profile>
  • 将上述配置的profile默认启用,在settings.xml文件中配置如下:
<activeProfiles>
    <activeProfile>dev</activeProfile>
</activeProfiles>

完成上述配置之后,重新对工程进行全局编译,则可畅通无阻,会自动完成com.ccc:ccc-framework:4.6.2.0-SNAPSHOT的下载。