这两个 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>

第一个区别显然是路径:

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

和:

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

显然,第一个声明排除了所有.jar文件和I10n下的所有文件。另一方面,第二条路径包含.jar文件。

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

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

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

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

最新更新