AEM-第一课
1.什么是AEM
1.1 AEM 官方定义
- Adobe Experience Manager is a web-based client-server system for building, managing, and deploying commercial websites and related services.
- A number of infrastructure-level and application-level functions are combined into a single integrated package.
1.2 AEM 自我理解
1.2.1 AEM简要介绍
AEM本质为 Adobe 出品的一个CMS管理系统,相比于市面上其他著名的CMS系统,比如Wordpress,织梦等。
1.2.2 AEM具有以下显著特点:
- 所见即所得: 一般的CMS系统都会提供很多预开发好的功能和页面,比如首页,文章详情页,文章列表页等页面,然后用户可以在CMS提供的管理后台管理和维护站点的相关信息,或者创建新的文章,而这些管理后台都只是表单型的提交数据到数据库,用户再次进入站点前台页面时,前台页面会读取新的数据配置的页面信息再次渲染出来。
而AEM则不需要在一个独立的管理后台中进行表单式的提交数据,而是直接在最终页面上进行编辑,编辑完后直接显示
- 组件化: 不用于一般CMS由开发商一次开发好所有网站功能,一般以页面为单位,用户只能在管理后台编辑数据的模式,AEM的具有一定逻辑代码的最小单元是组件,AEM平台本身提供了很多常用的组件,比如列表(链接,图片均可),富文本编辑,面包屑,图片,轮播图,表格等组件,开发者也可以开发任何自定义组件。 下面是OOTB提供的一些组件:
- 文档型数据库: 不同于一般的CMS系统使用MySql, SqlServer等关系型数据库,AEM采用文档型数据库(JCR)来存储数据。使用该数据库的显著特点是AEM的程序本身,以及用户所添加的数据,上传的图片等全部存储在AEM实例的所在文件夹中,文件夹结构如下:
1.3 AEM 能做什么
AEM 作为一个企业级的CMS管理系统,主要用户维护,创建和部署大型商业网站及其服务
2. 本地开发环境的搭建
2.1 所需软件:
- AEM 6.5
- JDK1.8
- Apache Maven (3.3.9或更高版本)
- Node.js v10 +
- npm 6+
2.2 集成开发环境(IDE)
- IntelliJ
- AEM Tools插件
- AEM IDE Tooling 4 Intellij插件
- IntelliVult 插件
2.3 安装本地AEM实例
步骤:
- 确保 已安装Java
- 获取AEM快速入门Jar和license.properties 的副本(百度网盘)
- 在计算机上创建一个文件夹结构,如下所示
~/aem-sdk
/author 作者环境
/publish 发布环境
- 将jar重命名为 aem-author-p4502.jar 并将其放在 / author 目录下。在/ author 目录下添加 license.properties 文件
- 复制jar,将其重命名为 aem-publish-p4503.jar 并将其放在 / publish 目录下。在/ publish 目录下添加license.properties 文件 的副本
~/aem-sdk
/author
+ aem-author-p4502.jar
+ license.properties
/publish
+ aem-publish-p4503.jar
+ license.properties
- 双击 aem-author-p4502.jar 文件以安装 Author 实例。这将启动作者实例,该实例在本地计算机上的端口4502 上运行
双击 aem-publish-p4503.jar 文件以安装 发布 实例。这将启动发布实例,该实例在本地计算机上的端口4503 上运行
2.4 安装Apache Maven
- adobe-public 配置文件添加 到settings.xml
<settings xmlns="https://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<profiles>
<!-- ====================================================== -->
<!-- A D O B E P U B L I C P R O F I L E -->
<!-- ====================================================== -->
<profile>
<id>adobe-public</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<releaseRepository-Id>adobe-public-releases</releaseRepository-Id>
<releaseRepository-Name>Adobe Public Releases</releaseRepository-Name>
<releaseRepository-URL>https://repo.adobe.com/nexus/content/groups/public</releaseRepository-URL>
</properties>
<repositories>
<repository>
<id>adobe-public-releases</id>
<name>Adobe Public Repository</name>
<url>https://repo.adobe.com/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>adobe-public-releases</id>
<name>Adobe Public Repository</name>
<url>https://repo.adobe.com/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>adobe-public</activeProfile>
</activeProfiles>
</settings>
2.5 设置集成开发环境
- IntelliJ 安装 AEM Tools插件
- IntelliJ 安装 AEM IDE Tooling 4 Intellij插件
- IntelliJ 安装 IntelliVult 插件
- 下载vault-cli-3.4.0脚本
- 配置 IntelliVult
2.6 故障排除
2.6.1 遇到问题时,最好的第一步是验证代码是否已成功部署并安装到AEM
- 检查程序包管理器, 以确保代码包已上载并安装: http://localhost:4502/crx/packmgr/index.jsp 。检查时间戳以确认软件包最近已安装。
- 如果使用诸如Repo或AEM Developer Tools之类的工具进行增量文件更新, 请检查CRXDE Lite 该文件已被推送到本地AEM实例,并且文件内容已更新: http://localhost:4502/crx/de/index.jsp
- 如果发现与OSGi捆绑包中的Java代码相关的问题,请检查捆绑包是否已上传 。打开Adobe Experience Manager Web控制台: http://localhost:4502/system/console/bundles 并搜索您的捆绑软件。确保捆绑包处于 活动 状态
2.6.2 检查日志
- 日志位置 /crx-quickstart/logs/error.log
- 如果要更改日志级别,可以转到日志支持: http://localhost:4502/system/console/slinglog 进行修改
2.6.3 检查捆绑包处于已安装状态
所有捆绑包(不包括碎片)都应处于 活动 状态。如果您看到代码束处于“已安装”状态,则有一个问题需要解决。大多数情况下,这是一个依赖性问题. http://localhost:4502/system/console/bundles
在上面的屏幕截图中,WKND Core捆绑包处于“已安装”状态。这是因为捆绑软件包com.adobe.cq.wcm.core.components.models 版本与AEM实例上可用的版本不同 。
可以使用工具“依赖关系查找器”: http://localhost:4502/system/console/depfinder 添加程序包名称以检查AEM实例上可用的版本:
继续上面的示例,我们可以看到在AEM实例上安装的版本是 捆绑软件预期的12.2 和 12.6 。从那里,您可以向后工作,查看AEM上的Maven依赖项是否与AEM项目中的Maven依赖项匹配。在上面的示例中,AEM实例上安装了Core Components v2.2.0, 但是构建的代码束依赖于 v2.2.2 ,因此产生了依赖性问题。
2.6.4 验证吊索模型注册
AEM组件应始终由Sling模型支持,以封装任何业务逻辑并确保HTL呈现脚本保持干净。如果遇到无法找到Sling模型的问题,那么从控制台检查Sling模型可能会有所帮助: http://localhost:4502/system/console/status-slingmodels . 这将告诉您您的Sling模型是否已注册以及绑定到的资源类型(组件路径)
显示与wknd/components/content/byline的组件资源类型相关 的Sling模型BylineImpl 的注册 。
3 项目设置
3.1 创建项目
- 导航到要在其中生成AEM项目的目录,将以下内容粘贴到命令行中以 批处理方式生成项目
mvn archetype:generate -B -DarchetypeGroupId=com.adobe.granite.archetypes -DarchetypeArtifactId=aem-project-archetype -DarchetypeVersion=18 -DgroupId=com.adobe.aem.guides -Dversion=0.0.1-SNAPSHOT -DappsFolderName=wknd -DartifactId=aem-guides-wknd -Dpackage=com.adobe.aem.guides.wknd -DartifactName=“WKND Sites Project” -DcomponentGroupName=WKND -DconfFolderName=wknd -DcontentFolderName=wknd -DcssId=wknd -DisSingleCountryWebsite=n -Dlanguage_country=en_us -DoptionAemVersion=6.5.0 -DoptionDispatcherConfig=none -DoptionIncludeErrorHandler=n -DoptionIncludeExaples=y -DoptionIncludeFrontendModule=y -DpackageGroup=wknd -DsiteName=“WKND Site”
说明1:也可以用IntelliJ 的AEM开发人员工具插件 来创建Maven AEM项目.
说明2:如果收到以下错误: Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:3.1.1:generate (default-cli) on project standalone-pom: The desired archetype does not exist 。说明〜/ .m2 / settings.xml 文件中未正确引用Adobe 存储库。请重新确认settings.xml文件正确引用了Adobe存储库.
- 以下文件夹和文件结构由本地文件系统上的Maven原型生成
3.2 部署项目
- 确保您有一个在端口4502 上本地运行的AEM实例
- 从命令行导航到 aem-guides-wknd 项目目录
- 运行以下命令以将整个项目构建并部署到AEM
$ mvn -PautoInstallPackage clean install
...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for aem-guides-wknd 0.0.1-SNAPSHOT:
[INFO]
[INFO] aem-guides-wknd .................................... SUCCESS [ 0.394 s]
[INFO] WKND Sites Project - Core .......................... SUCCESS [ 7.299 s]
[INFO] WKND Sites Project - UI Frontend ................... SUCCESS [ 31.938 s]
[INFO] WKND Sites Project - Repository Structure Package .. SUCCESS [ 0.736 s]
[INFO] WKND Sites Project - UI apps ....................... SUCCESS [ 4.025 s]
[INFO] WKND Sites Project - UI content .................... SUCCESS [ 1.447 s]
[INFO] WKND Sites Project - All ........................... SUCCESS [ 0.881 s]
[INFO] WKND Sites Project - Integration Tests Bundles ..... SUCCESS [ 1.052 s]
[INFO] WKND Sites Project - Integration Tests Launcher .... SUCCESS [ 1.239 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
...
Maven配置文件 autoInstallSinglePackage 编译项目的各个模块,并将单个程序包部署到AEM实例。默认情况下,此软件包将部署到本地运行在端口4502上 且使用admin:admin 凭据的AEM实例 。
- 导航到本地AEM实例上的Package Manager: http://localhost:4502/crx/packmgr/index.jsp 。 您应该看到三个软件包,分别是 aem-guides-wknd.ui.apps , aem-guides-wknd.ui.content 。
- 导航到站点控制台: http://localhost:4502/sites.html/content 。WKND网站将是其中一个网站。