升级Jackrabbit Maven插件后AEM包报MIXED遗留类型错误求助
错误解释与解决方案
错误含义
Package of type 'MIXED' is legacy. Use one of the other types instead! 这个错误源于Jackrabbit FileVault 1.3.2版本的校验器开始严格执行包类型规范:"MIXED"是AEM 6.1及更早版本使用的遗留包类型,在AEM 6.3+对应的FileVault版本中已被废弃,必须使用标准化的包类型替代。
你没在源码中找到"MIXED"字样,大概率是以下场景导致:
- 旧版本插件默认使用"MIXED"类型,升级后未显式指定新类型,构建时插件自动沿用了遗留默认值
- 项目依赖的第三方Vault包(如第三方AEM组件)仍使用"MIXED"类型
- 源码中的
properties.xml未定义包类型,构建过程中插件自动生成的产物中包含了该遗留类型
调整建议
1. 显式在Maven插件中指定包类型
在项目pom.xml中,给filevault-package-maven-plugin添加packageType配置,根据包内容选择对应类型:
- 普通内容包(页面、组件、模板等)用
content - 应用程序包(OSGi bundle集合)用
application - 容器包(用于嵌套其他包)用
container
示例配置:
<plugin> <groupId>org.apache.jackrabbit</groupId> <artifactId>filevault-package-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <!-- 显式指定包类型,替换MIXED遗留类型 --> <packageType>content</packageType> <!-- 其他原有配置保持不变 --> </configuration> </plugin>
多模块项目需确保所有使用该插件的模块都添加此配置。
2. 排查依赖的第三方Vault包
执行Maven命令生成依赖树,定位可能包含"MIXED"类型的第三方包:
mvn dependency:tree -DoutputFile=dependency-tree.txt
在输出结果中筛选类型为zip的依赖(Vault包通常为zip格式),解压这些包查看META-INF/vault/properties.xml中的packageType字段。若发现第三方包使用"MIXED",需:
- 替换为该包的更新版本(新版本通常会使用标准类型)
- 若无法替换,可排除该依赖并自行重新打包为标准类型的包
3. 检查构建产物中的properties.xml
查看target目录下构建生成的Vault包内的META-INF/vault/properties.xml,确认是否存在packageType="MIXED"。源码中的配置可能被构建过程覆盖,显式指定插件的packageType会强制覆盖这个值。
4. 清理构建缓存后重新构建
执行以下命令清理旧的构建产物,避免缓存残留导致问题:
mvn clean install
内容的提问来源于stack exchange,提问作者SWiggels
相关产品推荐
相关产品推荐

