Clojure deps.edn无法解析id.walt/waltid-ssikit依赖问题
解决deps.edn引入waltid-ssikit时的webjar依赖解析错误
问题原因
Maven与Clojure deps.edn的依赖解析逻辑存在差异:Maven默认会忽略可选依赖,而deps.edn默认会拉取所有依赖(包括标记为可选的)。报错中的org.webjars.npm/babel__highlight是某个上游依赖的可选依赖,其版本范围[8.0.0-alpha.1,9)在现有仓库中找不到匹配版本,导致deps解析失败,但Maven自动跳过了该依赖的处理。
解决方案
1. 排除有问题的依赖
在deps.edn中为waltid-ssikit添加排除规则,跳过无法解析的依赖:
{:mvn/repos {"waltid" {:url "https://maven.walt.id/repository/waltid/"} "waltid-ssikit" {:url "https://maven.walt.id/repository/waltid-ssi-kit/"} "jitpack.io" {:url "https://jitpack.io/"} "Maven central" {:url "https://repo1.maven.org/maven2"}} :deps {id.walt/waltid-ssikit {:mvn/version "1.2308021811.0" :exclusions [org.webjars.npm/babel__highlight]}}}
2. 强制指定依赖的具体版本
如果排除依赖后影响功能,可以手动指定仓库中存在的babel__highlight稳定版本,覆盖原版本范围:
{:mvn/repos {"waltid" {:url "https://maven.walt.id/repository/waltid/"} "waltid-ssikit" {:url "https://maven.walt.id/repository/waltid-ssi-kit/"} "jitpack.io" {:url "https://jitpack.io/"} "Maven central" {:url "https://repo1.maven.org/maven2"}} :deps {id.walt/waltid-ssikit {:mvn/version "1.2308021811.0"} org.webjars.npm/babel__highlight {:mvn/version "8.24.7"}}}
3. 定位上游依赖(可选)
若不确定该依赖来自哪个上游包,可通过以下命令查看完整依赖树:
clj -Stree | grep babel__highlight
内容的提问来源于stack exchange,提问作者tillaert
相关产品推荐
相关产品推荐

