有人能解释一下这两种资源定义之间的区别吗?为什么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>
答案 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文件。