Apache Isis从v1.12.2迁移至v1.13.0构建失败:未知仓库错误
解决Apache Isis 1.13.x升级中Security插件仓库找不到的问题
从你的报错信息来看,核心问题是Isis核心版本与安全模块(及其他Incode插件)的版本不匹配,加上Isis 1.13.x开始对原Addons插件的架构做了调整,导致元模型无法找到安全模块的仓库服务。下面一步步帮你解决:
问题根源
在Isis 1.12.2及之前,你使用的是旧版的isis-addons-module-security插件,它会自动注册ApplicationRoleRepository等仓库服务到Isis的元模型中。但从Isis 1.13.x开始,官方将原Isis Addons插件迁移到了Incode模块体系,同时调整了模块的服务注册逻辑:
- 旧的
isis-addons-*插件不再适配1.13+的Isis核心版本 - 新的Incode模块(包名改为
org.incode.*)需要与Isis核心版本完全同步,否则会出现类路径或服务不兼容的情况
你提到的isis-app-todoapp使用更高主版本的组合,原因是Isis的主版本升级(比如1.x→2.x)会带来重大API变更,Incode模块也会同步发布对应主版本的兼容包,官方示例自然会跟进最新的兼容版本栈。
解决方案(针对1.13.x版本)
1. 替换插件依赖
将旧的Addons插件依赖替换为对应的Incode模块,并且版本号必须与Isis核心版本完全一致(比如你用Isis 1.13.0,所有Incode模块也用1.13.0):
- 安全模块:
isis-addons-module-security→incode-module-security - Audit模块:
isis-addons-module-audit→incode-module-audit - SessionLogger模块:
isis-addons-module-sessionlogger→incode-module-sessionlogger
修改你的pom.xml中的依赖,示例如下:
<!-- 替换前 --> <dependency> <groupId>org.isisaddons</groupId> <artifactId>isis-addons-module-security</artifactId> <version>1.12.2</version> </dependency> <!-- 替换后(以Isis 1.13.2为例) --> <dependency> <groupId>org.incode.module</groupId> <artifactId>incode-module-security</artifactId> <version>1.13.2</version> </dependency>
2. 更新引导类(AppManifest)
在你的应用引导类中,将模块的引用从旧的org.isisaddons包名改为新的org.incode包名:
// 替换前 import org.isisaddons.module.security.SecurityModule; // 替换后 import org.incode.module.security.SecurityModule;
确保getModules()方法中正确包含所有需要的Incode模块。
3. 清理并重新构建
执行Maven命令清理旧的依赖缓存,重新构建项目:
mvn clean install
升级到最新Isis版本的建议
如果目标是升级到最新的Isis版本(比如2.x系列),需要注意以下几点:
- 逐步升级:不要跨多个主版本直接跳级(比如从1.12.2直接到2.x),建议先从1.12.2升到1.13.x,再依次升到1.x的最新版本,最后再迁移到2.x。每个版本都要解决完兼容性问题再继续。
- 适配API变更:2.x版本对安全模块、领域模型等做了大量重构,比如权限模型、服务注册方式都有变化,需要对照官方迁移文档调整代码。
- 保持版本同步:所有Incode模块的版本必须与Isis核心版本完全一致,这是避免类似“仓库找不到”这类问题的关键。
内容的提问来源于stack exchange,提问作者mathematted
相关产品推荐
相关产品推荐

