——————————目录大纲——————————
一、说明
本文介绍搭建本地AEM实例以及本地代码导入后的事项。
AEM全称Adobe Experience Management,是一套基于OSGI、Apache Sling和Java Content Repository技术的完整企业解决方案。传统网站是基于HTML、JS、CSS来构建,也可使用目前流行的各种框架Vue3,React等等。在AEM中,是基于模板、组件、内容组成网站的页面。
二、正文
1、下载和安装
1.1 JDK
版本,目前代码中AEM-SDK的版本是2023.2.11289.20230224T170559Z-230100,那么统一使用JDK11进行开发即可,如果是下的较新的AEM-SDK本地运行包,需要JDK21才行
——切记一定使用JDK11,否则可能会出现Maven编译报错等疑难杂症,这是老师同学们血淋淋的经验!——
——切记一定使用JDK11,否则可能会出现Maven编译报错等疑难杂症,这是老师同学们血淋淋的经验!——
——切记一定使用JDK11,否则可能会出现Maven编译报错等疑难杂症,这是老师同学们血淋淋的经验!——

下载并安装完JDK之后,首先配置系统环境变量:
进入【系统设置】的【高级系统设置】中:

依次添加【用户环境变量】和【系统环境变量】:


变量详情如下:
①用户变量增加:
变量名: JAVA_HOME 变量值(参考自己jdk安装以后的路径): C:\Program Files\Java\jdk-11 变量名: JRE_HOME 变量值(参考自己jdk安装以后的路径): C:\Program Files\Java\jdk-11
②系统变量Path中增加:
C:\Program Files\Java\jdk-11\bin
然后在CMD控制台(或者powershell)下执行:
-- Windows: java -verison -- Mac OS: java --version -- Linux java --version
提示如下即可完成Java环境的配置:

1.2 node.js
下载和安装:https://nodejs.org/en/download/package-manager
使用命令验证是否已安装Node.js:
node -v

使用命令验证是否已安装npm:
npm -v

1.3 maven
下载:https://maven.apache.org/download.cgi
安装:https://maven.apache.org/install.html
命令验证是否已安装Maven:
mvn -v

1.4 AEM SDK
按照日期倒序排,选择最新的一个进行下载:

下载完毕后打开压缩包,里面结构如下:

主要用到的是第二个quickstart.jar,首先创建个目录并解压,比如C:\office\aem-sdk\author:

把aem-sdk-quickstart-2024.5.16461.20240524T172309Z-240500.jar更名为:aem-author-p4502.jar
crx-quickstart目录为author实例启动后自动生成的内容,jar包名字的命名方式,aem-实例名(author/publish)-p端口号.jar
1.5 repo(可选)
当更新了本地的内容,需要同步到自己local的instance环境,有两种形式,一个是Maven直接打包,一个是就是通过repo的方式
repo的方式比较快捷,能实时将一个或多个文件、文件夹推送到AEM local环境。
以Windows为例,首先是安装Cygwin64这个工具,它相当于提供了兼容层能在Windows下执行Linux环境的一些操作。
下载地址:https://www.cygwin.com/install.html
安装:



安装过程中,需要记好安装的目录要与上一步主程序目录保持一致:

然后在后面的软件包这里这里需要注意:

将这几个命令都进行安装:curl、wget、lynx、gcc-core、gcc-g++、make、gdb、binutils、cmake、zip,以备后用。
安装完毕后打开cygwin,需要将权限进行配置(重要):
echo "none / cygdrive binary,user,noacl,posix=0 0 0" >> /etc/fstab
在cygwin窗口中,执行以下命令更新软件包:
apt-cyg update

如果提示apt-cyg: command not found
那么把该文件放到cygwin的根目录下的bin目录下:
然后重新打开窗口再试。
接下来,就可以去IDE中配置repo了,可参考文档:https://github.com/Adobe-Marketing-Cloud/tools/tree/master/repo#installation
①下载https://github.com/Adobe-Marketing-Cloud/tools/releases/download/repo-1.4/repo
②在IDE中配置,以Idea举例:

Windows下配置:

PUT: 程序:C:\office\cygwin64\bin\bash 实参:-l C:\office\repo put -f $UnixSeparators($FilePath$)$ 工作目录:留空 GET: 程序:C:\office\cygwin64\bin\bash 实参:-l C:\office\repo get -f $UnixSeparators($FilePath$)$ 工作目录:留空 STATUS: 程序:C:\office\cygwin64\bin\bash 实参:-l C:\office\repo st -f $UnixSeparators($FilePath$)$ 工作目录:留空 DIFF: 程序:C:\office\cygwin64\bin\bash 实参:-l C:\office\repo diff -f $UnixSeparators($FilePath$)$ 工作目录:留空
然后还需要在项目根目录下面创建文件.repo:

内容为:
server=http://localhost:4502 credentials=admin:admin

最后,就可以实现右击文件夹或者文件进行repo推送了:

同时可以在按键绑定里面绑定快捷键:

1.6 Git代码拉取
Git地址:https://gitlab.xpaas.lenovo.com/lenovo/lenovo-cms
如果提示在Windows下拉取一些比较大的开源项目经常会提示文件路径太长(filename too long),然后怎么都不成功,可以尝试以下解决方式:
①配置git
git config --system core.longpaths true
②修改文件C:\Program Files\Git\etc\gitconfig(需要以管理员身份打开)
[core] autocrlf = true fscache = true symlinks = false longpaths = true
longpaths = true表示允许路径字符串超过260
③输入命令查看
git config --system core.longpaths
1.7 Dispatcher模拟(可选)
如果需要本地调试Dispatcher的规则,那么可能就要用到当前内容。
基本有两种形式:
①本机安装Apache然后利用httpd的一些规则达到部分模拟。
②下载Docker相关内容,按照官方文档进行处理:https://experienceleague.adobe.com/zh-hans/docs/experience-manager-learn/cloud-service/local-development-environment-set-up/dispatcher-tools
由于公司内网对Windows Docker Desktop是禁止的,因此需要通过虚拟机的形式安装子系统然后进行安装,大致如下:
在AEM-SDK中,有以下执行脚本:
aem-sdk-dispatcher-tools-2.0.219-unix.sh

copy脚本到Linux环境并执行下面命令:
chmod a+x aem-sdk-dispatcher-tools-x.x.x-unix.sh ./aem-sdk-dispatcher-tools-x.x.x-unix.sh
会出现dispatcher-sdk-2.0.252文件夹

该文件夹下面即为所有的Dispatcher相关所需要的内容:

我们只需要将对应的Dispatcher文件放到src目录下面,然后执行以下语句进行启动或者验证
#### 验证配置 脚本默认在src目录下,因此在根目录(如:`/opt/docker/aem/dispatcher-sdk-2.0.219`)执行如下指令可以校验配置是否正常 ./bin/validate.sh ./src #### 运行dispatcher ./bin/docker_run_hot_reload.sh ./src localhost:4502 8080
目前经过调试和验证的Dispatcher配置如下,和项目www环境的配置保持一致,替换到src目录下即可直接使用:
需要注意的是,每次在windows改完,会因为换行符等问题导致启动失败,有以下两种方式解决:
①将配置格式改为UNIX/LINUX;
②每次启动Dispatcher前执行上面压缩包内的complete_fix.sh文件
并附带两个完整shell脚本,放到Dispatcher根目录下使用即可:
脚本内容:
### test.sh ### 用于测试配置是否正确,类似httpd -t或者nginx -t ./src/complete_fix.sh bash /opt/aem/dispatcher/dispatcher-sdk-2.0.252/bin/validate.sh /opt/aem/dispatcher/dispatcher-sdk-2.0.252/src ### start.sh ### 用于启动Dispatcher ./src/complete_fix.sh /opt/aem/dispatcher/dispatcher-sdk-2.0.252/bin/docker_run_hot_reload.sh /opt/aem/dispatcher/dispatcher-sdk-2.0.252/src 192.168.56.1:80 8080
2、运行
2.1 控制台启动
在当前目录使用CMD,启动author实例
java -jar aem-author-p4502.jar -& 或 java -Xmx1024M -jar aem-author-p4502.jar -p 4502 -r author -p指的是工作端口 -r指的是启动模式。常见的模式有author与publish两种。当然还有其他的,用得不多就此略过罢
其中,以上两个参数是可省的,因为默认的参数就是端口 4502,模式 author。
也可以设置更复杂的参数,比如直接创建一个bat文件,里面录入:
# 以gui方式启动 java -jar aem-author-p4502.jar -gui # 以debug方式启动 java -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8888,server=y,suspend=n -jar aem-author-p4502.jar
其中JVM远程调试端口为8888(可自定义),如果加入-gui参数,那么还会弹出以下图形界面方便查看进度已经开关:

2.2 GUI 双击启动
当然,有时为了方便,也可以直接双击aem-author-p4502.jar启动。只是有几个需要注意的地方。
默认的情况,是以author模式,启动在localhost:4502。但我们可以在启动以前,通过修改jar包的名字,达到不同模式不同端口的效果。
aem-<instance-type>-p<port-number>.jar
比如,修改成
aem-publish-p4503.jar
启动,就将以publish的模式启动,端口是4503。
理想的情况是,你需要同时启动两个instance,只需要把jar包和license文件放在相应目录下就可以了。如:
<aem-install>/author 和 <aem-install>/publish
以gui方式启动完毕后会弹出该界面:

2.3 启动配置
首次运行会出现以下输入登录用户名和密码,统一都输入admin即可:

以后再运行,出现以下内容,即证明启动成功:
结束窗口或者使用Ctrl + C即可停止服务。
启动后会在jar包所在同级目录生成crx-quickstart目录,目录结构如下:

第一次启动会比较久,不要太着急,启动完毕后,默认浏览器会自动打开http://localhost:4502地址。
然后输入刚才在CMD中录入的用户名admin密码admin进行登录:


进入AEM的author实例首页,我们就可以在这里进行开发工作,author实例就算是安装完毕了。
备注:
在AEM中,分为Author实例和Publish实例,还有一个Dispatcher组件。
Author实例,顾名思义是作者实例,我们可以在Author实例中进行模板、组件的使用,还可以通过代码实现自定义组件、自定义模板等等功能。开发人员的工作内容也大多集中在Author实例上。
Publish实例是发布实例,我们在Author实例中创建页面、在页面中使用组件并编辑内容后,就可以将Author实例中的页面发布到Publish实例中去。
Dispatcher组件是一个集Web服务器、缓存、CDN等功能于一体的组件。
3、本地代码
3.1 下载
登录Gitlab:https://gitlab.xpaas.lenovo.com/lenovo/lenovo-cms

Copy地址,推荐使用ssh的方式,不用来回更新密码:

本地进行clone后目录结构:

3.2 导入IDE
根据自己习惯使用的IDE开发工具,将代码进行导入,可以参考以下地址:
3.3 编译打包
***打包前建议先将环境变量按照以下文档的1.1进行配置:***
3.3.1 执行项目编译
初次启动SDK,需要执行完整过程的编译,打开IDE,如:VSCODE、IDEA,在确保本地AEM SDK已经启动的情况下,依次执行以下步骤:
①在代码根目录,执行如下编译指令:
mvn clean install -PautoInstallSinglePackage
②进入http://localhost:4502/crx/packmgr/index.jsp ,然后查看左侧是否类似如下图所示:
证明整体项目都已经打包编译完成,并把包部署到了本地SDK中。
③按需在crx/de中导入页面后,即可进入测试使用。
以下是常用的针对不同目录的打包编译命令:
-----------------打包细节说明-----------------
下面命令是一些特殊情况下,单独针对目录的编译方式,比如若要生成所有模块,请在项目根目录中运行以下命令,并使用 Maven 3:
mvn clean install
一个正在运行的AEM实例,则可以构建和打包整个项目,然后使用以下方法部署到AEM中:
mvn clean install -PautoInstallSinglePackage
若要将其部署到发布实例,请运行
mvn clean install -PautoInstallPackagePublish
如果是Java类的改动,比如core目录下的,那么需要打包bundle:
mvn clean install -PautoInstallBundle
如果是ui.apps、ui.content、ui.config,需要打包package可以使用:
mvn clean install -PautoInstallPackage
3.3.2 确认是否编译成功
首先进入本地环境的目录下面查看:
http://localhost:4502/assets.html/content/dam
对应是:Assets - Files


此时能看到Lenovo文件夹,这时就证明编译完成。

注意:如果是编译后访问localhost:4502是404或者其他错误,建议确认JDK为11后,清空maven repo仓库,删除AEM-SDK生成的crx-quickstart目录后,重新进行编译尝试!
3.4 将lenovo相关包通过CRX进行导入
依次将extra目录下的包通过http://localhost:4502/crx/de/index.jsp 进行导入:

导入后,需要手动点击install,让包内容在环境中解压:

3.5 本地接口调用
3.5.1 鉴权

3.5.2 GET

3.5.3 POST

上一篇
20240709 页面快速创建下一篇
3、模板