【问题标题】:Updating filter.xml of aem package using curl使用 curl 更新 aem 包的 filter.xml
【发布时间】:2019-07-19 11:24:24
【问题描述】:

我想使用 CURL 创建 aem 包。我无法向包中添加过滤器。

我已经尝试了以下命令,我可以使用第一个和第三个命令创建和构建一个包,但无法使用第二个命令添加过滤器。

创建包

curl -u admin:admin -X POST http://localhost:4502/crx/packmgr/service/.json/etc/packages/my_packages/testpackage?cmd=create -d packageName=testpackage -d groupName=my_packages

添加过滤器

curl -u admin:admin -X POST http://localhost:4502/crx/packmgr/update.jsp -F path=/etc/packages/my_packages/testpackage.zip -F packageName=testpackage -F groupName=my_packages -F {filter="[{\'root \' : \'/content/wucom/nam/ca/en/contactus-success\'}]"} -F 'charset=UTF-8'

构建包

curl -u admin:admin -X POST http://localhost:4502/crx/packmgr/service/.json/etc/packages/my_packages/testpackage.zip?cmd=build

构建的包没有任何过滤器。

【问题讨论】:

    标签: curl package aem cql


    【解决方案1】:

    由于 /crx/packmgr/service.jsp 不支持创建过滤器,您可以改为执行以下操作:

    1. 在文件系统上创建适当的 META-INF/vault/filter.xml 文件。
    2. 下载压缩包文件:

      curl -u admin:adminhttp://localhost:4502/etc/packages/my_packages/testpackage.zip

    3. 使用 jar 命令从 zip 中提取 filter.xml 文件:

      jar -xvf testpackage.zip META-INF/vault/filter.xml

    4. 编辑提取的 META-INF/vault/filter.xml 文件。

    5. 使用 jar -uvf 命令使用新的 filter.xml 更新 zip 文件:

      jar -uvf testpackage.zip META-INF/vault/filter.xml

    有关如何使用 python 代码生成包 filter.xml 的一些示例代码,请参阅本文: https://helpx.adobe.com/experience-manager/kb/How-to-build-a-package-from-an-XPath-query-without-installing-any-tools-to-the-AEM-instance-AEM.html

    【讨论】:

      【解决方案2】:

      我发布了有助于创建过滤器的命令,并且正在使用 AEM 6.4。创建和构建包是相对简单的任务,为了保持帖子简洁,这些任务已被跳过 -

          curl -X POST \  http://Host:4502/etc/packages/my_packages/content_backup2.zip/jcr:content/vlt:definition/ \
        -H 'Postman-Token: 8ae9290f-af72-44a4-808c-658a7130d5f1' \
        -H 'cache-control: no-cache' \
        -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
        -F _charset_=utf-8 \
        -F jcr:primaryType=nt:unstructured \
        -F :nameHint=filter
      

      此命令将在包内的 vlt:definition 下创建一个过滤器节点。

      然后创建子过滤器节点也很简单。这将对完整的内容节点树进行内容备份。您可以将“-F root=/content”替换为您的要求-

      curl -X POST \  http://host:4502/etc/packages/my_packages/content_backup2.zip/jcr:content/vlt:definition/filter/ \
        -H 'Postman-Token: bc168785-94dd-4b99-a302-4b0a70b7225c' \
        -H 'cache-control: no-cache' \
        -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
        -F _charset_=utf-8 \
        -F jcr:primaryType=nt:unstructured \
        -F mode=replace \
        -F root=/content \
        -F :nameHint=f0
      

      【讨论】:

        【解决方案3】:
        <form id="damFilterForm" method="POST" action="/etc/packages/local_packages/packageWithFiltersYo.zip/jcr:content/vlt:definition/filter/f0" enctype="multipart/form-data">
                <input id="damPath" type="hidden" name="root" value="/"/>
                <input id="damPath" type="hidden" name="jcr:primaryType" value="nt:unstructured"/>
                <input type="hidden" name="mode" value="replace"/>
                <input id="helperDamSubmit" type="Submit" value="Submit DAM" style="display:none" />
            </form>
        

        $("#damFilterForm").submit();

        请注意:过滤器可以像这样添加,只是这提供了一个对用户不友好的渲染器,现在似乎有办法将它返回到主引用 JSP。即重定向 URL 是过滤器节点本身。将其恢复到表单中是一项艰巨的任务。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-09-30
          • 2011-06-14
          • 1970-01-01
          • 2023-04-11
          • 2011-01-10
          • 1970-01-01
          相关资源
          最近更新 更多