【问题标题】:CQ5.5 Updating an existing package through CURLCQ5.5 通过 CURL 更新现有包
【发布时间】:2023-04-11 08:44:01
【问题描述】:

我正在使用一系列 CURL 请求来创建我的包。

我目前在做什么:我创建了一个新包,向其中添加了过滤器,然后构建了该包。

创建包:

curl -f -N -u ${USER}:${PASS} -d "packageName=${PACKAGE}&groupName=${GROUP}" "${CMS_HOST}/crx/packmgr/service/exec.json?cmd=create"

应用过滤器:

curl -f -N -u ${USER}:${PASS} -F "path=/etc/packages/${GROUP}/${PACKAGE}.zip" -F "packageName=${PACKAGE}" -F "groupName=${GROUP}" -F "version=" -F "description=" -F "thumbnail=" -F "filter=${FILTER}" -F "_charset_=UTF-8" "${CMS_HOST}/crx/packmgr/update.jsp"

构建包:

curl -f -N -u ${USER}:${PASS} -d "cmd=build" "${CMS_HOST}/crx/packmgr/service/script.html/etc/packages/${GROUP}/$PACKAGE.zip"

我想做的事添加更多过滤器 到这个包并重新构建它。

我想知道是否有办法更新现有包。我一直在四处寻找,看看我们如何做到这一点,但失败了。有人可以帮我吗?

谢谢。

更新:添加了我正在使用的 CURL 命令。

【问题讨论】:

    标签: aem crx


    【解决方案1】:

    这里有一个例子,我有一个已经有两个过滤器的包

    要添加另一个过滤器

    用于创建过滤节点的 CURL

    curl --data jcr:primaryType=nt:unstructured --user admin:admin http://localhost:4502/etc/packages/my_packages/testcurl.zip/jcr:content/vlt:definition/filter/f2
    

    添加过滤器属性

    curl -u admin:admin -Froot="/content/geometrixx-outdoors/en/toolbar" http://localhost:4502/etc/packages/my_packages/testcurl.zip/jcr:content/vlt:definition/filter/f2.rw.html
    

    如果需要为默认包行为添加其他属性(即“mode”和“rules”)

    curl -u admin:admin -Fmode="replace" http://localhost:4502/etc/packages/my_packages/testcurl.zip/jcr:content/vlt:definition/filter/f2.rw.html
    
    curl -u admin:admin -Frules@TypeHint="String[]" -Frules=" " -Frules=" "http://localhost:4502/etc/packages/my_packages/testcurl.zip/jcr:content/vlt:definition/filter/f2.rw.html
    

    最后构建您的包以影响附加过滤器以添加到现有包中

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

    【讨论】:

    • 感谢您的回复。这很有帮助:)
    • 现在,我正在用 Ruby 编写脚本并将 CURL 命令转换为 POST 请求。除了 curl -u admin:admin -Frules@TypeHint="String[]" -Frules=" " -Frules=" "localhost:4502/etc/packages/my_packages/testcurl.zip/… 之外,我可以让一切正常工作。我无法通过“规则”数组。知道我该怎么做吗?
    【解决方案2】:

    所有的包都存储在/etc/packages/my_packages路径下,可以通过标准的curl命令修改以进行节点管理。所有包都有过滤器作为子节点。

    所有包管理器命令都可以通过/crx/packmgr/service.jsp?cmd=help获得

    例如,为了构建一个包使用/crx/packmgr/service.jsp?cmd=build

    【讨论】:

    • 是的。我去过那里。我已经用我正在使用的 CURL 命令更新了我的问题。构建包后,如果我想向 SAME 包添加更多过滤器,我该怎么做?目前,如果我运行上面提到的“应用过滤器”命令,它会覆盖现有的过滤器。看起来它处于某种覆盖模式而不是更新/追加模式。
    • 您可以使用 curl 数据发布,例如 curl --data "jcr:primaryType=nt:unstructured&mode=replace" --user <user>:<password> <aem-server>/etc/packages/my_packages/<package>.zip/jcr:content/vlt:definition/filter/**f0**,其中 f0 是您要添加的新过滤器的路径。所有新过滤器都添加为 fN 其中 N 是增量的
    猜你喜欢
    • 2011-06-15
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    • 2016-11-12
    相关资源
    最近更新 更多