我找到了两个关于如何为AEM项目构建Maven工件的示例:
<<artifact>>
|- <<artifact>>-bundle (OSGi services bundle)
|- <<artifact>>-content (Adobe defaults to /apps/<<artifact>>
<<artifact>>
|- <<artifact>>-view (components, templates, clientlibs, design nodes)
|- <<artifact>>-config (JCR node configurations)
|- <<artifact>>-services (OSGi)
|- <<artifact>>-taglib
|- <<artifact>>-all
|- <<artifact>>-content (/content/<<artifact>> nodes)
我更喜欢用第二种东西;它看起来更干净,可以避免设计人员和开发人员在开发过程中遇到冲突。例如,Adobe原型不会将用户内容(/content/<<artifact>>
和/etc/designs/<<artifact>>
)与开发人员内容(/apps/<<artifact>>
和/etc/clientlibs/<<artifact>>
)分开。我找不到任何关于为什么Adobe推荐第一种风格的可靠信息,但也许我遗漏了一些东西,Adobe推荐的模式是正确的。有没有AEM经验的人能够在这里称重?
答案 0 :(得分:2)
这个问题有点危险,因为它鼓励意见而不是事实,而不是SO的意义。无论如何,我尝试详细说明我的经验。
Adobe原型适用于简单项目,在大多数情况下都足够了。不要被名称后缀-content
弄糊涂。它包含/apps/artifact
部分,组件(包括JSP,dialog.xml等),通常还包含/etc/designs/artifact
。它不包含内容;我没有任何理由这样做,因为内容不是代码。
-content
部分的使用。
我基于Adobe创建了我自己的原型,其中包含以下部分:
<<artifact>>
|- <<artifact>>-core (OSGi services bundle)
|- <<artifact>>-config (environment specific configurations of Adobe and custom OSGi services)
|- <<artifact>>-ui (/apps/artifact, /etc/designs/artifact, etc.)
根据经验,您可以找到另一种方法来构建适合您风格的CQ / AEM项目。或者,如果您计划集成NEBA或Slice这样的框架,他们可能会有自己的项目结构。