一个工程依赖于另一个项目的一个jar 的snapshot版本,但是maven编译的时候发现无法下载xxx-snapshot.jar 。 到maven本地库目录查看,发现只有文件.lastUpdated 。而并没有jar文件。出了什么问题了?
<repository>
<id>ummsSnaps</id>
<url>https://team/nexus/content/repositories/snapshots</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
发现对
snapshots的属性设置为false,这就告诉maven说不要从这个仓库下载快照版本。所以改为true。问题就解决了。
下面是一个说明:
- <project>
- ...
- <repositories>
- <repository>
- <id>maven-net-cn</id>
- <name>Maven China Mirror</name>
- <url>http://maven.net.cn/content/groups/public/</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>maven-net-cn</id>
- <name>Maven China Mirror</name>
- <url>http://maven.net.cn/content/groups/public/</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </pluginRepository>
- </pluginRepositories>
- ...
- </project>
我们先看一下<repositories>的配置,你可以在它下面添加多个<repository> ,每个<repository>都有它唯一的ID,一个描述性的name,以及最重要的,远程仓库的url。此外,<releases><enabled>true</enabled></releases>告诉Maven可以从这个仓库下载releases版本的构件,而<snapshots><enabled>false</enabled></snapshots>告诉Maven不要从这个仓库下载snapshot版本的构件。禁止从公共仓库下载snapshot构件是推荐的做法,因为这些构件不稳定,且不受你控制,你应该避免使用。当然,如果你想使用局域网内组织内部的仓库,你可以激活snapshot的支持。
关于<repositories>的更详细的配置及相关解释,请参考:http://www.sonatype.com/books/maven-book/reference_zh/apas02s08.html。
参考: