在Maven中打包时不包括资源

最后发布: 2014-03-14 03:05:05


问题

我有一个示例结构为的项目:

jcr_root |_apps |_A |_B |_etc |_A |_B

我需要做的是在创建程序包时,添加“ apps / A&etc / A”或“ apps / B&etc / B”

在我的pom.xml中,我尝试了类似以下操作:

<resources>
       <resource>
        <directory>src/main/content/jcr_root</directory>
            <excludes>
            <exclude>apps/A/**</exclude>
                        <exclude>etc/A/**</exclude>
                </excludes>
     </resource>
</resources>

但是,打包时仍然包含应用等下的“ A”和“ B”。 我正在使用content-package-maven-plugin构建将在CQ上部署的软件包。

我尝试将条目放入filter.xml,但是在部署时使用,而不在打包时使用。

似乎include / exclude标记根本不起作用。 为了进行测试,我尝试:

<resources>
   <resource>
    <directory>src/main/content/jcr_root</directory>
        <excludes>
        <exclude>**/*.otf</exclude>
                    </excludes>
   </resource>
</resources>

但是仍然fonts.otf文件仍包含在打包的zip中。

请提供一些帮助或提示。 让我知道是否需要更多信息。

提前谢谢了。

maven aem maven-resources-plugin
回答

所以最终我能够使用排除的资源创建一个包。

问题不在于include / exclude标记(它们总是可以正常工作。)

排除某些资源后的文件被复制到“ target / classes”目录中问题是maven-content-package插件将资源从原始源目录打包,而不是从创建的“ target / classes”目录中进行打包。因此,它始终包含所有内容。 这是maven-content-package插件的默认行为。

因此,我不得不明确地告诉插件,您需要从“目标/类”中选择要打包的资源。

<builtContentDirectory>${basedir}/target/classes</builtContentDirectory>

如果有人需要更多详细信息,请告诉我。 感谢您的所有回答:)


回答

由于要包含jcr_root / app / A和jcr_root / etc / A,请尝试在POM.xml中使用它:

<project>
    ...
    <resources>
    <resource>
        <directory>jcr_root</directory>
        <includes>
            <include>**/*A*</include>
        </includes>
        <excludes>
            <exclude>**/*B*</exclude>
        </excludes>
    </resource>
    <resources>
</project>

同样,您可以执行此操作以获取jcr_root / app / B和jcr_root / etc / B。

问候

Jyotsna