AEM / CQ Maven项目结构 - 多个JCR节点子模块

时间:2014-09-16 20:53:19

标签: maven cq5 aem maven-archetype

我找到了两个关于如何为AEM项目构建Maven工件的示例:

  1. Adob​​e的官方multimodule-content-package-archetype
  2. <<artifact>> |- <<artifact>>-bundle (OSGi services bundle) |- <<artifact>>-content (Adobe defaults to /apps/<<artifact>>

    1. cqblueprints multi-module archetype
    2. <<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经验的人能够在这里称重?

1 个答案:

答案 0 :(得分:2)

这个问题有点危险,因为它鼓励意见而不是事实,而不是SO的意义。无论如何,我尝试详细说明我的经验。

Adob​​e原型适用于简单项目,在大多数情况下都足够了。不要被名称后缀-content弄糊涂。它包含/apps/artifact部分,组件(包括JSP,dialog.xml等),通常还包含/etc/designs/artifact。它不包含内容;我没有任何理由这样做,因为内容不是代码。

另一方面,cqblueprint对于小型项目而言过于分散,但对于大型项目则有意义。虽然如上所述,但我没有看到-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项目。或者,如果您计划集成NEBASlice这样的框架,他们可能会有自己的项目结构。