使用curl更新aem包的filter.xml

使用curl更新aem包的filter.xml,curl,package,aem,cql,Curl,Package,Aem,Cql,我想使用CURL创建aem包。我无法向包中添加筛选器 我已经尝试了下面的命令,我可以使用第一个和第三个命令创建和构建包,但无法使用第二个命令添加过滤器 创建包 curl-u admin:admin-X POST-d packageName=testpackage-d groupName=my\u packages 添加过滤器 curl-u admin:admin-X POST-F path=/etc/packages/my_packages/testpackage.zip-F packageNa

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

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

创建包 curl-u admin:admin-X POST-d packageName=testpackage-d groupName=my\u packages

添加过滤器 curl-u admin:admin-X POST-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}-F'charset=UTF-8'

构建包 curl-u admin:admin-X POST


生成的包没有任何筛选器。

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

  • 在文件系统上创建适当的META-INF/vault/filter.xml文件
  • 下载包zip文件:

    curl-u管理员:admin

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

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

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

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

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

  • 有关如何使用python代码生成包filter.xml的示例代码,请参阅本文:

    我正在发布有助于创建过滤器的命令,并且正在使用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
    
    
    
    $(“#damFilterForm”).submit()

    请注意:可以像这样添加过滤器,只是这样会产生一个用户不友好的渲染器,现在似乎有办法将其返回到主引用JSP。i、 e.重定向URL是过滤器节点本身。要将其返回表单是一项艰巨的任务。

    <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>