我正在使用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
个文件:
但是当我使用排除规则创建此过滤器并检查覆盖范围时,.DS_Store
文件 被排除在外:
有没有理由在DS_Store前点击点在排除中不起作用但是使用0或更多模式呢?
答案 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>