正则表达式模式似乎在Adobe Experience Manager过滤器排除规则中不起作用

时间:2016-10-27 16:25:43

标签: aem

我正在使用Adobe Experience Manager第6版,我在从包中排除.DS_Store文件时遇到了困难。

我修改了META-INF/vault/filter.xml文件以排除文件名模式:

<?xml version="1.0" encoding="UTF-8"?>
<workspaceFilter version="1.0">
    <filter root="/apps/myapp">
        <exclude pattern="\.DS_Store"/>
    </filter>
</workspaceFilter>

但是当我上传我的包或通过vlt推送它们时,.DS_Store文件仍然包含在内。

我做了一些尝试,通过CRXDE Lite创建了一个包含过滤器和排除规则的软件包,但它让我更加困惑。

当我使用带有排除规则的原始过滤器并检查覆盖范围时,仍会包含.DS_Store个文件:

files are not excluded

但是当我使用排除规则创建过滤器并检查覆盖范围时,.DS_Store文件 被排除在外:

files are excluded

有没有理由在DS_Store前点击点在排除中不起作用但是使用0或更多模式呢?

1 个答案:

答案 0 :(得分:1)

您的第一个正则表达式(.DS_Store)正在寻找位于.DS_Store的节点,该文件可能位于/.DS_Store。正则表达式需要匹配完整路径。你的第二个例子(。* DS_Store)工作的原因是因为它在DS_Store之前寻找任何字符的0或更多。这显然匹配以DS_Store结尾的任何路径。

您可以在http://www.regexr.com/上试用您的示例,并在文字区域添加一些文件路径,以查看它是如何匹配的。

您可以使用构建中的maven-assembler-plugin排除文件,而不是尝试使用filter.xml排除文件。

在你的pom.xml中,你会添加这样的插件:

            <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <appendAssemblyId>false</appendAssemblyId>
                <descriptors>
                    <descriptor>src/main/assembly/zip.xml</descriptor>
                </descriptors>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

在zip.xml中,您可以指定类似以下内容的内容,其中包含您不希望包含在文件包中的文件:

<?xml version='1.0' encoding='UTF-8'?><assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>zip</id>
<formats>
    <format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
    <fileSet>
        <directory>${basedir}/src/main/content/jcr_root</directory>
        <outputDirectory>jcr_root</outputDirectory>
        <excludes>
            <exclude>**/.DS_Store</exclude>
        </excludes>
        <filtered>false</filtered>
    </fileSet>
    <fileSet>
        <directory>${basedir}/src/main/content/META-INF</directory>
        <outputDirectory>META-INF</outputDirectory>
        <excludes>
            <exclude>**/.DS_Store</exclude>
        </excludes>
        <filtered>true</filtered>
    </fileSet>
</fileSets>
<dependencySets>
    <dependencySet>
        <outputDirectory>jcr_root/apps/myapp/install</outputDirectory>
        <useProjectArtifact>false</useProjectArtifact>
        <scope>compile</scope>
        <includes>
            <include>com.icfolson.aem:myapp-core</include>
        </includes>
        <useStrictFiltering>true</useStrictFiltering>
    </dependencySet>
</dependencySets>