Win10构建Ignite 2.8源码时Maven依赖解析失败如何解决?
问题原因
构建失败由两个叠加问题导致:
- Maven 3.8.1及以上版本默认内置HTTP仓库拦截规则,所有使用HTTP协议的第三方仓库都会被
maven-default-http-blocker直接拦截,报错里提到的OW2、Apache快照仓库都是HTTP协议,会被直接阻断拉取请求。 - 传递依赖拉取的
org.jacorb:jacorb:2.2.3-jonas-patch-20071018是OW2当年打的临时补丁构件,从未同步到Maven中央仓库,仅存于OW2的旧HTTP仓库中,目前该仓库的旧资源已经停止公开维护,常规方式无法拉取。
可行解决方案
按操作成本从低到高排序:
- 直接跳过ignite-jta模块编译
绝大多数本地调试、二次开发的场景都不需要用到JTA集成模块,直接在原构建命令上增加模块排除参数即可,不需要改任何配置:
执行后构建会自动跳过ignite-jta模块,不影响核心功能、其余模块的正常编译和使用。mvn clean install -P all-java,all-scala,licenses -DskipTests -Dmaven.javadoc.skip=true -pl '!ignite-jta' - 替换依赖版本绕过失联构件
如果必须编译ignite-jta模块,可以在根pom.xml中找到org.ow2.jotm:jotm-core的依赖声明,添加排除规则移除对补丁版jacorb的依赖,再手动引入官方正式版jacorb 2.2.3即可,二者核心API完全兼容,不会影响运行时逻辑:
改完后需要把Maven配置中OW2仓库地址替换为HTTPS协议源,避免被HTTP拦截规则阻断。<dependency> <groupId>org.ow2.jotm</groupId> <artifactId>jotm-core</artifactId> <version>2.2.3</version> <exclusions> <exclusion> <groupId>org.ow2.carol</groupId> <artifactId>carol</artifactId> </exclusion> </exclusions> </dependency> <!-- 引入正式版jacorb替代补丁版 --> <dependency> <groupId>org.jacorb</groupId> <artifactId>jacorb</artifactId> <version>2.2.3</version> </dependency> - 本地手动安装缺失构件
如果有渠道从历史构建缓存、旧环境备份中拿到该补丁版本的jar和pom文件,直接执行本地安装命令将构件导入本地Maven仓库即可,无需修改依赖配置:
安装完成后直接执行原构建命令即可。mvn install:install-file -Dfile=jacorb-2.2.3-jonas-patch-20071018.jar -DpomFile=jacorb-2.2.3-jonas-patch-20071018.pom -DgroupId=org.jacorb -DartifactId=jacorb -Dversion=2.2.3-jonas-patch-20071018 -Dpackaging=jar
注意事项
- 不建议为了绕过HTTP拦截直接删除Maven内置的
maven-default-http-blocker配置,会引入供应链安全风险,优先使用HTTPS源、本地安装构件的方式处理依赖问题。 - Ignite 2.8对高版本JDK8兼容性一般,建议使用1.8.0_191~1.8.0_202区间的JDK版本编译,避免出现其他插件报错。
内容的提问来源于stack exchange,提问作者Alan Liu
相关产品推荐
相关产品推荐

