这两个Maven资源定义有什么区别?

时间:2014-09-13 13:14:25

标签: java maven

有人能解释一下这两种资源定义之间的区别吗?为什么jar文件被排除但包含在第二个资源中?我不明白这两个声明:

 <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <excludes>
                <exclude>**/*.jar</exclude>
                <exclude>myDummyPath/war/l10n/*.*</exclude>
            </excludes>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>false</filtering>
            <includes>
                <include>**/*.jar</include>
            </includes>
        </resource>
 </resources>

2 个答案:

答案 0 :(得分:1)

第一个区别显然是路径:

<excludes>
    <exclude>**/*.jar</exclude>
    <exclude>myDummyPath/war/l10n/*.*</exclude>
</excludes>

<includes>
    <include>**/*.jar</include>
</includes>

显然,第一个声明排除了所有.jar个文件以及I10n下的所有内容。另一条路径包括 .jar个文件。

接下来,第一个声明启用过滤,第二个声明禁用它。在maven中,过滤(默认情况下)将所有变量占位符${...}替换为其值 - 有关详细信息,请阅读the documentation

因此,在第一个声明中,除了.jar文件和本地化文件之外的所有资源都通过maven过滤 - 替换占位符的值,例如${project.name}

在第二个声明中,将复制所有.jar个资源,而不进行过滤。

答案 1 :(得分:0)

查看不同的filtering设置。作者希望Maven在一些文件(可能是配置文件)中替换占位符,但不要破坏二进制jar文件。