Maven 为何无法解析插件依赖中的 SNAPSHOT?
数据小许
结论
通常无需在依赖版本中手动填写时间戳。声明 2025.6-SNAPSHOT 后,Maven 会读取该版本目录下的 maven-metadata.xml,并据此解析实际发布的时间戳版本。
从问题中提供的地址来看,建议先检查插件仓库 URL:配置和 Maven 日志中使用的是 /repositories/maven-snapshots,而可访问元数据和带时间戳 POM 的地址使用的是 /repository/maven-snapshots。两者路径不同。可以先将仓库 URL 改为实际存放文件的地址。
修正仓库地址
将 pluginRepository 中的 URL 改为与实际文件地址一致:
<pluginRepositories>
<pluginRepository>
<id>plugin-snapshots</id>
<url>https://central.sonatype.com/repository/maven-snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</pluginRepository>
</pluginRepositories>
依赖中继续使用基础快照版本:
<dependency>
<groupId>io.openapiprocessor</groupId>
<artifactId>openapi-processor-spring</artifactId>
<version>2025.6-SNAPSHOT</version>
</dependency>
常规依赖声明中无需填写 2025.6-20251206.152917-15 这样的时间戳版本。Maven 通常会根据仓库元数据自动映射时间戳和构建编号。
验证方式
检查配置的仓库基础地址下是否能访问以下文件:
io/openapiprocessor/openapi-processor-spring/2025.6-SNAPSHOT/maven-metadata.xml- 元数据中列出的带时间戳 POM 和 JAR
如果本地缓存了旧的解析结果,可以使用 mvn -U 重新检查快照更新。例如:
mvn -U <原来的 Maven 命令>
日志应显示 Maven 从修正后的 /repository/maven-snapshots/ 路径读取元数据和构件。如果该路径下的元数据或其中列出的构件不存在、无法访问,或者元数据中没有对应的时间戳版本,就需要继续检查仓库发布结果和访问权限。Gradle 能成功使用该依赖,并不能确认 Maven 当前配置的仓库地址也正确。
备注:内容仅供参考。
