AEM 项目原型

AEM项目原型创建了一个基于最佳实践的、最基础的Adobe Experience Manager项目,可用作您自己的AEM项目的起点。 使用此原型时必须提供的属性允许您指定此项目所有部分的名称,并控制某些可选功能。

为何使用原型

使用AEM项目原型,您可以在构建基于最佳实践的AEM项目的道路上前进,只需几次击键。 通过使用原型,所有片段都已到位,这样,尽管生成的项目最小,但它已实施AEM的所有关键功能,因此您只需在顶部构建并扩展即可。

当然,成功的AEM项目包含许多元素,但使用AEM项目原型是一个不错的基础,强烈建议对任何AEM项目使用。

入门

项目原型使得在AEM上开始开发变得非常简单。 您可以通过多种方式执行第一步。

  • WKND教程 — 有关在AEM上进行开发(包括如何利用原型)的重要介绍,请参阅AEM Sites快速入门 — WKND教程,以获取一个实际示例,该示例将指导您逐步使用原型来实施简单项目。
  • WKND事件教程 — 如果您对AEM上的单页应用程序(SPA)开发特别感兴趣,请务必查看专用的WKND事件教程
  • 自行下载并启动! — 您可以轻松下载GitHub上提供的当前项目原型,并按照🔗下面的简单步骤,通过创建您的第一个项目。

原型的使用

AEM原型由模块组成:

  • 核心:是一个Java包,其中包含所有核心功能(如OSGi服务、侦听器和调度程序),以及与组件相关的Java代码(如servlet和请求过滤器)。
  • it.tests:是基于Java的集成测试。
  • ui.apps:包含 /apps/etc 目的和部分,即JS和CSS客户端库、组件和模板。
  • ui.content:包含使用ui.apps模块中的组件的示例内容。
  • ui.config:包含项目的特定于运行模式的OSGi配置。
  • ui.frontend.general: (可选) 包含使用基于Webpack的常规前端生成模块所需的工件。
  • ui.frontend.react: (可选) 包含使用原型创建基于React的SPA项目时所需的工件。
  • ui.frontend.angular: (可选) 包含使用原型创建基于Angular的SPA项目时所需的工件。
  • ui.tests:包含基于硒的UI测试。
  • 全部:是一个内容包,嵌入所有编译的模块(包和内容包),包括任何供应商依赖项。
  • 分析:对项目运行分析,该分析为部署到AEM as aCloud Service提供了额外验证。

Maven中表示的AEM Archetype模块作为表示应用程序、内容和必要OSGi包的内容包部署到AEM。

如何使用原型

要使用原型,您首先需要创建一个项目,该项目将本地文件结构中的模块生成为之前描述的。 在项目生成过程中,可以定义项目的许多属性,如项目名称、版本等。

使用Maven构建项目时,会创建可部署到AEM的工件(包和OSGi包)。 其他Maven命令和配置文件可用于将项目工件部署到AEM实例。

创建项目

要开始使用,您大多可以简单地使用AEM Eclipse扩展,然后按照“新建项目”向导选择​AEM示例多模块项目​来使用已发布的原型版本。

当然,您也可以直接调用Maven。

mvn -B archetype:generate \
 -D archetypeGroupId=com.adobe.aem \
 -D archetypeArtifactId=aem-project-archetype \
 -D archetypeVersion=XX \
 -D aemVersion=cloud \
 -D appTitle="My Site" \
 -D appId="mysite" \
 -D groupId="com.mysite" \
 -D frontendModule=general \
 -D includeExamples=n
  • XX设置为最新AEM项目原型的版本号
  • AEM的aemVersion=cloud设置为Cloud Service;
    Adobe Managed Services或内部部署设置aemVersion=6.5.0
    仅会为非云aem版本添加核心组件依赖项,因为为AEM as a Cloud提供了核心组件OOTB
    服务。
  • 调整appTitle="My Site"以定义网站标题和组件组。
  • 调整appId="mysite"以定义Maven人为对象ID、组件、配置和内容文件夹名称以及客户端库名称。
  • 调整groupId="com.mysite"以定义Maven groupId和Java源包。
  • 查找可用属性列表,以查看是否需要调整更多属性。
注意

最佳做法是将adobe-public配置文件添加到Maven settings.xml文件,以便自动将repo.adobe.com添加到Maven构建过程。

此处🔗提供了POM 示例。

属性

使用原型创建项目时,可以使用以下属性。

名称 默认 描述
appTitle 应用程序标题将用于网站标题和组件组(例如,"My Site")。
appId 技术名称将用于组件、配置和内容文件夹名称,以及客户端库名称(例如,"mysite")。
artifactId ${appId} 基本Maven对象ID(例如,"mysite")。
groupId 基本Maven组ID(例如,"com.mysite")。
package ${groupId} Java源包(例如,"com.mysite")。
version 1.0-SNAPSHOT 项目版本(例如,1.0-SNAPSHOT)。
aemVersion cloud Target AEM版本(对于AEM as a Cloud Service,可以为cloud;或6.5.0,或6.4.4(适用于Adobe Managed Services或内部部署版)。
sdkVersion latest aemVersion=cloud可以指定 SDK版本时(例如,2020.02.2265.20200217T222518Z-200130)。
includeDispatcherConfig y 包含适用于云或AMS/on-premise的调度程序配置,具体取决于aemVersion的值(可以是yn)。
frontendModule general 包括Webpack前端构建模块,用于为常规站点生成客户端库(可以是generalnone);可以是angularreact(对于实施SPA编辑器的单页应用程序)。
language en 语言代码(ISO 639-1),用于从(例如,en, deu)。
country us 国家/地区代码(ISO 3166-1),用于从(例如US)。
singleCountry y 包括语言主控的内容结构(可以是yn)。
includeExamples n 包括组件库示例站点(可以是yn)。
includeErrorHandler n 包括一个对整个实例全局的自定义404响应页面(可以是yn)。
includeCommerce n 包括CIF核心组件依赖项并生成相应的工件。
commerceEndpoint 仅CIF必需。 要使用的商务系统GraphQL服务的可选端点(例如,https://hostname.com/grapql)。
datalayer y 激活与Adobe客户端数据层的集成。
amp n 为生成的项目模板启用AMP支持。
enableDynamicMedia n 在项目策略设置中启用基础DynamicMedia组件,并在核心图像组件的策略中激活Dynamic Media功能。
enableSSR n 为前端项目启用SSR的选项
注意

如果首次在交互模式下执行原型,则无法更改具有默认值的属性(有关更多详细信息,请参阅ARCHETYPE-308)。 当结尾的属性确认被拒绝并重复调查表时,或通过在命令行中传递参数(例如,-DoptionIncludeExamples=n)。

注意

在Windows上运行并生成调度程序配置时,您应在提升的命令提示符下或Linux的Windows子系统中运行(请参阅问题329)。

个人资料

运行mvn install时,生成的Maven项目支持不同的部署配置文件。

配置文件ID 描述
autoInstallBundle 将包含maven-sling-plugin的核心包安装到felix控制台
autoInstallPackage 将包含content-package-maven-plugin的ui.content和ui.apps内容包安装到包管理器,以在localhost(端口4502)上默认创作实例。 主机名和端口可以使用aem.hostaem.port用户定义的属性进行更改。
autoInstallPackagePublish 将包含content-package-maven-plugin的ui.content和ui.apps内容包安装到包管理器,以在localhost(端口4503)上默认发布实例。 主机名和端口可以使用aem.hostaem.port用户定义的属性进行更改。
autoInstallSinglePackage all包含content-package-maven-plugin的内容包安装到包管理器,以在localhost(端口4502)上默认创作实例。 主机名和端口可以使用aem.hostaem.port用户定义的属性进行更改。
autoInstallSinglePackagePublish 将包含content-package-maven-plugin的all内容包安装到包管理器,以在localhost(端口4503)上默认发布实例。 主机名和端口可以使用aem.hostaem.port用户定义的属性进行更改。
integrationTests 在AEM实例上运行提供的集成测试(仅适用于verify阶段)

构建和安装

要构建在项目根目录中运行的所有模块,请使用以下Maven命令。

mvn clean install

如果您有正在运行的AEM实例,则可以构建并打包整个项目,然后使用以下Maven命令将其部署到AEM中。

mvn clean install -PautoInstallPackage

要将其部署到发布实例,请运行此命令。

mvn clean install -PautoInstallPackagePublish

或者,要部署到发布实例,请运行此命令。

mvn clean install -PautoInstallPackage -Daem.port=4503

或者,要仅将包部署到作者,请运行此命令。

mvn clean install -PautoInstallBundle

父POM

位于项目根目录(<src-directory>/<project>/pom.xml)的pom.xml称为父POM,它驱动项目结构并管理项目的依赖关系和某些全局属性。

全局项目属性

父POM的<properties>部分定义了对于在AEM实例上部署项目非常重要的几个全局属性,如用户名/密码、主机名/端口等。

这些属性设置为部署到本地AEM实例,因为这是开发人员将执行的最常见内部版本。 请注意,有一些资产可部署到创作实例和发布实例。 这也是将凭据设置为通过AEM实例进行身份验证的地方。 使用默认的管理员:管理员凭据。

已设置这些属性,以便在部署到更高级别的环境时可以覆盖这些属性。 这样,POM文件就不必更改,但诸如aem.hostsling.password之类的变量可以通过命令行参数来覆盖:

mvn -PautoInstallPackage clean install -Daem.host=production.hostname -Dsling.password=productionpasswd

模块结构

父POM的<modules>部分定义项目将构建的模块。 默认情况下,项目会生成之前定义的标准模块:核心、ui.apps、ui.content、ui.tests和it.launcher。 随着项目的不断发展,可以随时添加更多模块。

依赖关系

父POM的<dependencyManagement>部分定义项目中使用的所有API依赖项和版本。 应在父POM中管理版本。 核心和ui.apps等子模块不应包含任何版本信息。

Uber-Jar

关键依赖项之一是AEM uber-jar。 这将包括所有AEM API,只包含AEM版本的一个依赖项条目。

注意

作为最佳实践,您应更新uber-jar版本以匹配AEM的目标版本。 例如,如果您计划部署到AEM 6.4,则应将uber-jar的版本更新为6.4.0。

核心组件

AEM项目原型当然会利用核心组件。

核心组件在默认运行模式下自动安装在AEM中,并由示例WKND站点使用。 在生产运行模式(nosamplecontent)中,核心组件不可用。

因此,为了在所有部署中利用核心组件,最佳做法是将它们包含在Maven项目中。

注意

核心组件的每个版本通常后跟一个AEM项目原型版本,以便最新原型使用最新版本的核心组件。

但是,原型的新版本可能不会直接遵循核心组件的新版本,因此您可能希望将对核心组件的依赖项更新到最新版本。

注意

core.wcm.components.examples是一组示例页面,用于说明核心组件的示例。 作为最佳实践,在部署生产用项目时,您应该删除此依赖项和子包包含。

测试

项目中包含三个测试级别,由于它们是不同类型的测试,因此会以不同的方式或在不同的位置执行它们。

  • 核心单元测试:这显示了对包中包含的代码的经典单元测试。 要进行测试,请执行:
    • mvn clean test
  • 服务器端集成测试:这些测试在AEM环境(即在AEM服务器上)中运行类似于单元的测试。 要进行测试,请执行:
    • mvn clean verify -PintegrationTests
  • 客户端Hobbes.js测试:这些是基于JavaScript的浏览器端测试,用于验证浏览器端行为。 要测试,请执行以下操作:
    1. 在浏览器中加载AEM,就像创作页面一样。
    2. 开发人员模式中打开页面
    3. 打开左面板,然后切换到​Tests​选项卡。
    4. 找到生成的​MyName测试​并运行它们。

后续步骤

因此,您已构建并安装AEM项目原型。 现在怎么办? 原型很小,但包含许多根据推荐的最佳实践配置的强大AEM功能示例。 使用这些说明如何在项目中利用这些功能。 对于您可能需要执行以下操作的任何项目:

在此页面上