Maven clean install构建失败:无法解析来自JFrog/Bintray的jade-plugin-common依赖
看起来你遇到的是Maven 3.8+默认拦截HTTP仓库加上旧Bintray/JFrog仓库下线的组合问题,我给你几个可行的解决方向,按推荐优先级排序:
1. 升级依赖链中的核心依赖(最推荐)
你的问题根源是pdf2dom:1.6依赖的旧版FontVerter引入了废弃的reflections-maven,最终链到了那个无法访问的JFrog插件依赖。最彻底的解决方式是升级pdf2dom到最新稳定版,它的依赖链已经更新,不会再用到这些旧仓库。
具体操作:
- 打开项目的
pom.xml,找到net.sf.cssbox:pdf2dom的依赖项,把版本从1.6改成最新的稳定版(比如2.0.1,可通过Maven Central确认最新版本) - 保存后重新执行
mvn clean install
升级后,整个依赖链会切换到使用HTTPS仓库的现代依赖,从根源上解决问题,还能顺便获得bug修复和兼容性提升(对遗留项目来说,小版本升级通常风险很低)。
2. 手动将缺失依赖安装到本地仓库
如果因为项目兼容性问题无法升级依赖,那就手动把jade-plugin-common:1.3.8安装到你的本地Maven仓库,这样Maven就不会再去远程仓库查找了:
- 先获取
jade-plugin-common-1.3.8的pom和jar文件:可以去Maven Central搜索,或者从可信的镜像源/开发者备份中获取 - 执行以下Maven命令安装到本地仓库:
mvn install:install-file -Dfile=jade-plugin-common-1.3.8.jar -DpomFile=jade-plugin-common-1.3.8.pom - 安装完成后,重新运行构建命令即可。
3. 替换HTTP仓库为HTTPS版本(临时缓解)
Maven拦截的是HTTP仓库,而JFrog的大部分仓库现在都支持HTTPS了。你可以修改Maven的settings.xml(路径为~/.m2/settings.xml,若没有则新建),把原来的HTTP仓库地址换成HTTPS:
<settings> <mirrors> <!-- 替换旧的HTTP仓库为HTTPS版本 --> <mirror> <id>jfrog-plugins-https</id> <mirrorOf>jfrog-plugins</mirrorOf> <url>https://repo.jfrog.org/artifactory/plugins-releases</url> </mirror> </mirrors> </settings>
注意:Bintray已经正式下线,相关的HTTP仓库即使换成HTTPS也无法访问,这个方案仅能解决JFrog仓库的拦截问题。
4. 排除不必要的传递依赖
如果你的项目根本不需要reflections-maven的功能(很多时候这种插件类依赖是冗余的),可以直接在pom.xml里把它从传递依赖中排除:
<dependency> <groupId>net.mabboud.fontverter</groupId> <artifactId>FontVerter</artifactId> <version>1.2.18</version> <exclusions> <exclusion> <groupId>org.reflections</groupId> <artifactId>reflections-maven</artifactId> </exclusion> </exclusions> </dependency>
如果项目确实需要Reflections的功能,直接单独引入核心的reflections依赖(比如0.10.2版本),它不依赖那个JFrog插件。
先试试第一种升级方案,这是最省心的。如果升级遇到兼容问题,再考虑后面的选项。
内容来源于stack exchange

