如何使用快速开发环境

了解​ 如何在AEM as a Cloud Service中使用 ​快速开发环境(RDE)。 从您喜爱的集成开发环境(IDE)将代码和内容部署到RDE,以加快近乎最终代码的开发周期。

使用AEM WKND Sites项目,您可以通过从您喜爱的IDE运行AEM-RDE的install命令来了解如何将各种AEM工件部署到RDE。

  • AEM代码和内容包(all, ui.apps)部署
  • OSGi捆绑包和配置文件部署
  • Apache和Dispatcher将部署配置为zip文件
  • 单个文件,如HTL、.content.xml (对话框XML)部署
  • 查看其他RDE命令,如status, reset and delete

先决条件

克隆WKND Sites项目并在您喜爱的IDE中将其打开,以将AEM工件部署到RDE上。

$ git clone git@github.com:adobe/aem-guides-wknd.git

然后,通过运行以下maven命令来构建它并将其部署到本地AEM-SDK。

$ cd aem-guides-wknd/
$ mvn clean package

使用AEM-RDE插件部署AEM工件

使用aem:rde:install命令,让我们部署各种AEM工件。

部署alldispatcher

一个常见的起点是首先通过运行以下命令来部署alldispatcher包。

# Install the 'all' package
$ aio aem:rde:install all/target/aem-guides-wknd.all-2.1.3-SNAPSHOT.zip

# Install the 'dispatcher' zip
$ aio aem:rde:install dispatcher/target/aem-guides-wknd.dispatcher.cloud-2.1.3-SNAPSHOT.zip

成功部署后,请在创作和发布服务上验证WKND站点。 您应该能够在WKND网站页面上添加和编辑内容并进行发布。

增强和部署组件

让我们增强Hello World Component并将其部署到RDE。

  1. ui.apps/src/main/content/jcr_root/apps/wknd/components/helloworld/_cq_dialog/文件夹中打开对话框XML (.content.xml)文件

  2. 在现有Text对话框字段后添加Description文本字段

    code language-xml
    ...
    <description
        jcr:primaryType="nt:unstructured"
        sling:resourceType="granite/ui/components/coral/foundation/form/textfield"
        fieldLabel="Description"
        name="./description"/>
    ...
    
  3. ui.apps/src/main/content/jcr_root/apps/wknd/components/helloworld文件夹中打开helloworld.html文件

  4. Text属性的现有<div>元素之后渲染Description属性。

    code language-html
    ...
    <div class="cmp-helloworld__item" data-sly-test="${properties.description}">
        <p class="cmp-helloworld__item-label">Description property:</p>
        <pre class="cmp-helloworld__item-output" data-cmp-hook-helloworld="property">${properties.description}</pre>
    </div>
    ...
    
  5. 通过执行maven构建或同步单个文件来验证本地AEM-SDK上的更改。

  6. 通过ui.apps包或通过部署单个对话框和HTL文件来部署对RDE的更改。

    code language-shell
    # Using 'ui.apps' package
    $ cd ui.apps
    $ mvn clean package
    $ aio aem:rde:install target/aem-guides-wknd.ui.apps-2.1.3-SNAPSHOT.zip
    
    # Or by deploying the individual HTL and Dialog XML
    
    # HTL file
    $ aio aem:rde:install ui.apps/src/main/content/jcr_root/apps/wknd/components/helloworld/helloworld.html -t content-file -p /apps/wknd/components/helloworld/helloworld.html
    
    # Dialog XML
    $ aio aem:rde:install ui.apps/src/main/content/jcr_root/apps/wknd/components/helloworld/_cq_dialog/.content.xml -t content-xml -p /apps/wknd/components/helloworld/_cq_dialog/.content.xml
    
  7. 通过在WKND站点页面上添加或编辑Hello World Component来验证RDE上的更改。

查看install命令选项

在上述单个文件部署命令示例中,-t-p标志分别用于指示JCR路径的类型和目标。 让我们通过运行以下命令来查看可用的install命令选项。

$ aio aem:rde:install --help

这些标记含义一目了然,-s标记可用于仅将部署定位到创作或发布服务。 在部署​ content-file或content-xml ​文件时使用-t标记以及-p标记在AEM RDE环境中指定目标JCR路径。

部署OSGi捆绑包

要了解如何部署OSGi捆绑包,让我们增强HelloWorldModel Java™类并将其部署到RDE。

  1. core/src/main/java/com/adobe/aem/guides/wknd/core/models文件夹中打开HelloWorldModel.java文件

  2. 按如下方式更新init()方法:

    code language-java
    ...
    message = "Hello World!\n"
        + "Resource type is: " + resourceType + "\n"
        + "Current page is:  " + currentPagePath + "\n"
        + "Changes deployed via RDE, lets try faster dev cycles";
    ...
    
  3. 通过通过maven命令部署core捆绑包,验证本地AEM-SDK上的更改

  4. 通过运行以下命令将更改部署到RDE

    code language-shell
    $ cd core
    $ mvn clean package
    $ aio aem:rde:install target/aem-guides-wknd.core-2.1.3-SNAPSHOT.jar
    
  5. 通过在WKND站点页面上添加或编辑Hello World Component来验证RDE上的更改。

部署OSGi配置

您可以部署单个配置文件或完整的配置包,例如:

# Deploy individual config file
$ aio aem:rde:install ui.config/src/main/content/jcr_root/apps/wknd/osgiconfig/config/org.apache.sling.commons.log.LogManager.factory.config~wknd.cfg.json

# Or deploy the complete config package
$ cd ui.config
$ mvn clean package
$ aio aem:rde:install target/aem-guides-wknd.ui.config-2.1.3-SNAPSHOT.zip
TIP
要仅在作者或发布实例上安装OSGi配置,请使用-s标志。

部署Apache或Dispatcher配置

无法单独部署Apache或Dispatcher配置文件​ ,但需要以ZIP文件的形式部署整个Dispatcher文件夹结构。

  1. dispatcher模块的配置文件中进行所需的更改,以便演示,请更新dispatcher/src/conf.d/available_vhosts/wknd.vhost以仅缓存html文件60秒。

    code language-none
    ...
    <LocationMatch "^/content/.*\.html$">
        Header unset Cache-Control
        Header always set Cache-Control "max-age=60,stale-while-revalidate=60" "expr=%{REQUEST_STATUS} < 400"
        Header always set Surrogate-Control "stale-while-revalidate=43200,stale-if-error=43200" "expr=%{REQUEST_STATUS} < 400"
        Header set Age 0
    </LocationMatch>
    ...
    
  2. 在本地验证更改,有关更多详细信息,请参阅在本地运行Dispatcher

  3. 通过运行以下命令将更改部署到RDE:

    code language-shell
    $ cd dispatcher
    $ mvn clean install
    $ aio aem:rde:install target/aem-guides-wknd.dispatcher.cloud-2.1.3-SNAPSHOT.zip
    
  4. 验证RDE上的更改

其他AEM RDE插件命令

让我们查看要管理的其他AEM RDE插件命令,并与本地计算机的RDE交互。

$ aio aem:rde --help
Interact with RapidDev Environments.

USAGE
$ aio aem rde COMMAND

COMMANDS
aem rde delete   Delete bundles and configs from the current rde.
aem rde history  Get a list of the updates done to the current rde.
aem rde install  Install/update bundles, configs, and content-packages.
aem rde reset    Reset the RDE
aem rde restart  Restart the author and publish of an RDE
aem rde status   Get a list of the bundles and configs deployed to the current rde.

使用上述命令,可以从您喜爱的IDE中管理RDE,以加快开发/部署生命周期。

后续步骤

了解使用RDE🔗快速交付功能的开发/部署生命周期。

其他资源

RDE命令文档

用于与AEM快速开发环境交互的Adobe I/O Runtime CLI插件

AEM项目设置

recommendation-more-help
4859a77c-7971-4ac9-8f5c-4260823c6f69