3

我不了解 Maven 战争插件的以下过滤器配置。有人可以解释一下,他们在做什么吗?我用第一个示例和第二个示例标记了代码

    <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <webResources>
                    <!--First Example-->
                    <resource>
                        <directory>/src/main/webapp</directory>
                        <filtering>true</filtering>
                        <includes>
                            <include>**/*.xml</include>
                            <include>**/*.xhtml</include>
                        </includes>
                    </resource>
                    <!--Second Example-->  
                    <resource>
                        <directory>${basedir}/src/main/webapp</directory>
                        <filtering>false</filtering>
                        <excludes>
                            <exclude>**/*.xml</exclude>
                            <exclude>**/*.xhtml</exclude>
                        </excludes>
                    </resource>
                </webResources>
            </configuration>
        </plugin>
4

2 回答 2

6

我知道这是一个老问题,但另一个答案是如此误导,我觉得我应该澄清它......

Maven 中的过滤通常表示在处理的文本文件中替换属性占位符${project.version}的概念(例如,用项目的实际版本替换出现的)。

您的配置可以理解为:每个 XML 和/或 XHTML 文件在复制到目标目录时都应该进行属性替换,而其他所有文件都应该简单地复制到目标目录而不进行任何处理。

一些进一步的阅读:

于 2018-05-03T09:40:09.570 回答
-1

战争插件配置中的过滤用于包含/排除所选目录/文件。给定配置如下:

<resource>
    <directory>/src/main/webapp</directory>
    <filtering>true</filtering>
    <includes>
         <include>**/*.xml</include>
         <include>**/*.xhtml</include>
    </includes>
</resource>

上面配置的过滤设置为 /src/main/webapp 作为根目录 有一个称为过滤的标志,用于启用/禁用过滤

<include>**/*.xml</include>

表示将包含根目录 (/src/main/webapp) 的任何子目录中的所有 .xml 文件。下一个包含的含义相同,但带有 .xhtml 文件

<resource>
   <directory>${basedir}/src/main/webapp</directory>
   <filtering>false</filtering>
   <excludes>
      <exclude>**/*.xml</exclude>
      <exclude>**/*.xhtml</exclude>
   </excludes>
</resource>

所有参数都与上一部分相同,除了当我位于与 pom.xml 不同路径的根目录时使用具有相反含义的包含 ${basedir} 的排除。在上面的例子中,它不是必需的

希望这有助于理解它

于 2014-09-09T11:11:17.730 回答