当我们生成maven AEM项目时,我们如何确定要使用的原型?同样的决定因素和最佳实践是什么?
答案 0 :(得分:3)
您可以在Github上找到Adobe-Marketing-Cloud空间中提供的基线结构 - aem-project-archetype
这是一个非常基本的结构,为您提供以下模块 -
在决定项目结构之前要了解的重要事项是 -
尽管如此,最佳做法是将接口和实现分成不同的模块。大多数模块将有3个子模块(api,core和package)。
也可以有包含没有api / service的内容的包。这些模块不遵循osgi bundle的约定,例如配置,组件,设计等。
在我们的大多数AEM实现中,项目是从com.cqblueprints.archetypes生成的:多模块Maven Archetype及其文件夹结构根据AEM 6实施指南进行了重构。 创建的所有模块都是以更好的方式组织依赖关系,并清楚地分离包部署。
模块数量可能因项目而异,一些常见的可重复使用模块可能包括 -
此文件夹可以容纳常用的设置和脚本: - CI服务器脚本/设置 - Maven的settings.xml - 特定于项目的可重复使用的bash配置文件等。
这将有[api,核心和内容子模块]。顾名思义,这应该具有不属于任何模块的通用服务或实用程序类,或者可以在所有模块中使用。要特别小心并证明在这个模块中添加类的理由,否则一切都会出现在普通模块上。
这将有[api(如果你需要OSGI服务,可选),核心和内容子模块]。 - 核心模块包含所有SlingModel,WCMUse扩展和 支持Pojos。 - 内容包,包含与组件,模板相关的所有UI功能。正确构建此模块非常重要,因此添加组件,页面等不会使其无法管理。
我们在内容模块/apps/<your_project>/ui
该模块用于携带OSGI,云配置以及是否实现基于/ conf的实现。基于Conf的实施样本here
任何错误处理内容都应驻留在此处。示例配置具有作者模式显示错误堆栈,在发布模式下,它返回404响应。
任何错误处理内容都应驻留在此处。示例配置具有作者模式显示错误堆栈,在发布模式下,它返回404响应。
打包示例内容和/或测试内容。在某些实现中,我们选择将测试内容保留为单独的模块。
是最后编译的包模块,它将上述模块中生成的所有包组合到一个包中,以便部署到服务器。
如果您的应用程序有很多业务逻辑或处理,您可以添加更多模块,例如在几个项目中我们也有以下附加模块 -
除此之外,我们还创建了一个pom项目,该项目抽象了AEM项目特有的所有依赖项,配置,插件,配置文件,并将其用作项目POM的父项。这清理了项目pom,并允许同一客户的项目可重用。
示例parent.pom
here