Maven依赖版本范围配置失效问题排查及解决
解决Maven依赖版本范围无法解析javassist的问题
最终解决方案
问题根源在于运行Maven的脚本硬编码了--offline参数,该参数强制Maven进入离线模式,无法联网检查远程仓库的可用版本,才导致版本范围解析失败,且错误信息未明确指向离线模式的影响。移除脚本中的--offline参数后,Maven即可正常解析[3.29.2-GA,)这类版本范围。
原问题回顾
尝试为javassist配置版本范围依赖:
<dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <version>[3.29.2-GA,)</version> </dependency>
但Maven报错:
Could not resolve dependencies for project pl.morgwai.base:servlet-scopes:jar:10.1-SNAPSHOT-javax: Failed to collect dependencies at org.javassist:javassist:jar:[3.29.2-GA,): No versions available for org.javassist:javassist:jar:[3.29.2-GA,) within specified range -> [Help 1]
注:直接指定<version>3.29.2-GA</version>可正常拉取依赖,说明本地仓库已存在该版本。
曾猜测问题与GA标识有关,尝试单独配置classifier的方案,但并未解决问题:
<dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <version>[3.29.2,)</version> <classifier>GA</classifier> </dependency>
补充说明
3.29.2-GA是完整的版本号,并非3.29.2加GA分类器,因此单独指定classifier的配置本身不符合javassist依赖的实际结构。- Maven解析版本范围时,需要从远程仓库获取该依赖的所有可用版本元数据,离线模式下只能依赖本地仓库已缓存的版本数据,若本地没有符合范围的更新版本,就会触发上述错误。
内容的提问来源于stack exchange,提问作者morgwai
相关产品推荐
相关产品推荐

