Alfresco 7.4兼容旧Aikau扩展问题:AMP部署后扩展失效
旧版Aikau扩展适配Alfresco 7.4的解决方案
核心问题分析
日志里的「找不到压缩文件」报错,本质是Alfresco 7.4的前端资源处理逻辑和5.2版本不同——新版本默认会对前端资源做压缩、聚合,而旧插件的资源存放路径、打包配置没跟上,导致系统找不到对应压缩后的资源文件。
具体修复步骤
1. 调整资源目录结构
Alfresco 7.x的Aikau对前端资源的存放位置要求更严格,按以下方式调整:
- 把原插件里
js/com/acme/pages/services/这类自定义资源,移动到AMP包内的module/web/js/com/acme/pages/services/目录下 - 检查Surf配置文件(比如
share-config-custom.xml或自定义的*-context.xml),确保所有Aikau组件的资源路径和新目录对应
2. 临时禁用资源压缩(调试用)
如果想先确认功能本身没问题,可以先关闭资源压缩:
在Alfresco 7.4的share-config-custom.xml中添加以下配置:
<config evaluator="string-compare" condition="ResourceBundling"> <groups> <group name="aikau"> <compress>false</compress> <aggregate>false</aggregate> </group> </groups> </config>
重启服务后如果报错消失、功能恢复,就说明问题确实出在资源压缩/聚合环节,再做后续适配。
3. 配置资源聚合规则
Alfresco 7.x的Aikau资源聚合逻辑升级,需要在插件的share-config-custom.xml里明确声明自定义资源,让系统能正确识别并压缩:
<config evaluator="string-compare" condition="WebFramework" replace="true"> <web-framework> <resource-bundles> <bundle id="acme-custom-resources"> <resources> <resource>js/com/acme/pages/services/MyService.js</resource> <!-- 这里添加其他自定义JS、CSS资源路径 --> </resources> </bundle> </resource-bundles> </web-framework> </config>
同时在你的Aikau页面或组件配置里,引用这个资源bundle:
<component> <url>/components/your-custom-component</url> <dependencies> <dependency>acme-custom-resources</dependency> </dependencies> </component>
4. 用新版SDK重新打包插件
建议用对应Alfresco 7.4的SDK 4.x重构项目后重新打包:
- 将原项目迁移到SDK 4.x的目录结构,确保依赖的Aikau版本和7.4一致(1.0.127)
- 执行
mvn clean package重新生成AMP,这样打包出来的资源会完全符合新版本的规范
5. 排查Aikau API兼容性问题
Aikau 1.0.101到1.0.127有部分API变更,需要检查自定义代码:
- 比如
_getRestApiUrl这类方法的参数是否调整 - 组件生命周期钩子(如
onReady)的触发时机是否变化 - 确认没有使用已废弃的API,对照Alfresco内置的版本说明修改代码
验证流程
- 将修改后的AMP部署到Alfresco 7.4
- 清除浏览器缓存,同时删除Alfresco的临时文件(
tomcat/work、tomcat/temp目录) - 启动服务,查看日志是否还有找不到文件的错误
- 测试自定义Aikau扩展的显示和交互功能
内容的提问来源于stack exchange,提问作者David Dejmal
相关产品推荐
相关产品推荐

