有人可以解释一下这两个资源定义之间的差异吗?为什么 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 文件。