AEM Maven项目执行mvn命令后新增组件被删除问题咨询
这种情况我之前在AEM项目里也碰到过几次,大概率是你的新组件没被正确包含到Maven的构建包中,导致部署时被现有包的内容覆盖了。下面给你一步步排查和解决的方法:
1. 确认新组件的存放路径是否正确
AEM Archetype生成的项目中,组件必须放在ui.apps/src/main/content/jcr_root/apps/<你的项目名>/components目录下,和其他默认组件保持同级。比如你创建了一个custom-card组件,正确路径应该是:
ui.apps/src/main/content/jcr_root/apps/my-aem-project/components/custom-card
如果放在其他目录,Maven打包时不会自动包含这些文件,部署后自然看不到新组件。
2. 检查Maven构建配置是否包含组件文件
打开ui.apps模块的pom.xml,确认资源配置是否正确包含了src/main/content下的所有文件。Archetype生成的项目一般已经有这个配置,但可以核对一下:
<build> <resources> <resource> <directory>src/main/content</directory> <filtering>true</filtering> <excludes> <exclude>**/.vlt</exclude> <exclude>**/.vltignore</exclude> </excludes> </resource> </resources> <!-- 其他构建配置 --> </build>
如果这里的配置漏掉了组件所在的路径,就会导致文件不被打包。
3. 先打包验证组件是否被包含
不要直接部署,先执行mvn clean package命令,然后打开ui.apps/target目录下生成的.zip包,检查里面是否包含你的新组件文件夹和对应的.content.xml、cq:dialog.xml等文件。如果没有,说明文件没被纳入打包范围,回头检查路径和pom配置。
4. 尝试增量部署单个组件
如果不想每次都部署整个包(避免覆盖风险),可以用命令只部署新组件的路径:
mvn clean install -PautoInstallPackage -Dvlt.path=/apps/<你的项目名>/components/custom-card
这样只会把指定路径的组件部署到AEM,不会影响其他内容。
5. 检查AEM日志排查安装失败
如果以上步骤都没问题,但组件还是没出现,去AEM的日志系统(/system/console/slinglog)查看错误日志,看看是不是组件的XML文件有语法错误(比如标签未闭合、属性写错),导致部署时安装失败,看起来像是“被删除”了。
内容的提问来源于stack exchange,提问作者Kunal Dhingra

