使用content-package-maven-plugin时,JCR节点作为nt:file导入

时间:2015-01-15 18:04:58

标签: cq5 aem

我在我的Adobe CQ项目中使用/apps/myproject/config/org.apache.sling.commons.log.LogManager.factory.config-MYPROJECT.xml

在XML中创建了一个OSGI配置JCR节点
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root
    xmlns:sling="http://sling.apache.org/jcr/sling/1.0"
    xmlns:jcr="http://www.jcp.org/jcr/1.0"
    jcr:primaryType="sling:OsgiConfig"
    org.apache.sling.commons.log.level="Trace"
    org.apache.sling.commons.log.file="logs/myproject.log"
    org.apache.sling.commons.log.file.number="5"
    org.apache.sling.commons.log.file.size="5MB"
    org.apache.sling.commons.log.pattern="\{0,date,HH:mm:ss.SSS} *{4}* {3} {5}"
    org.apache.sling.commons.log.names="[com.mycompany.myproject]" />

问题是,当它被导入JCR时,它会显示为nt:file,而不是根据jcr:primaryType显示的内容,因此它在CRXDE中看起来像这样

incorrect import as nt:file

它看起来应该是这样的

expected import as sling:OsgiConfig

3 个答案:

答案 0 :(得分:1)

所以我的XML标记开始如下:

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root
    xmlns:sling="http://sling.apache.org/jcr/sling/1.0"
    ...

我最初做的是创建一个新的xml文件并放入我的配置中。我知道创建节点的其他两种方法

  1. 在CRXDE中执行,然后使用Vault导出
  2. 使用AEM开发人员工具(Apache Sling的Eclipse插件)在Eclipse中完成
  3. 对于Vault导出,XML的开头如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" ...
    

    在插件的情况下,它就像这样开始

    <?xml version="1.0" encoding="UTF-8"?>
    <jcr:root 
        xmlns:sling="http://sling.apache.org/jcr/sling/1.0"
        ...
    

    但等等,你在这里看不到它,插件实际上在jcr:root之后添加了一个friggin空格。

    因此,无论XML解析器如何处理这些XML文件以在JRC中创建节点,如果根节点名称后面没有空格,则行为很奇怪。我在Windows上,使用Maven 3.2.3,使用0.0.20版本的content-package-maven-plugin和AEM 5.6.1。

答案 1 :(得分:0)

请检查content-package-maven-plugin的过滤器定义。如果您的过滤器根目录设置为

<filter>
<root>
/apps/myproject/config/org.apache.sling.commons.log.LogManager.factory.config-MYPROJECT.xml
</root>
</filter> 

而不是

<filter>
<root>
/apps/myproject/config/org.apache.sling.commons.log.LogManager.factory.config-MYPROJECT
</root>
</filter> 

然后它可能只是将文件放入您的存储库而不是创建配置节点。 没有.xml文件扩展名的后者是正确的。

答案 2 :(得分:0)

您需要将jcr:mixinTypes =“[]”类型添加为记录器的属性。所以您的配置将如下:

 <?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
        jcr:mixinTypes="[]"
        jcr:primaryType="sling:OsgiConfig"
        org.apache.sling.commons.log.level="Trace"
        org.apache.sling.commons.log.file="logs/myproject.log"
        org.apache.sling.commons.log.file.number="5"
        org.apache.sling.commons.log.file.size="5MB"
        org.apache.sling.commons.log.pattern="\{0,date,HH:mm:ss.SSS} *{4}* {3} {5}"
        org.apache.sling.commons.log.names="[com.mycompany.myproject]" />

希望这会有所帮助。