最近参与了一个新项目,项目采用了自己开发的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,问题排查如下:
- 首先确认仓库中是否存在对应的依赖文件。
- 打开工程配置的maven配置文件settings.xml文件,看到配置了镜像地址,如下。
<mirror>
<id>nexus</id>
<name>ccc nexus</name>
<url>http://nexus.ccc.com/repository/maven-public/</url>
<mirrorOf>external:*</mirrorOf>
</mirror>
- 打开配置的镜像地址nexus.ccc.com/repository/…
- 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的下载。