maven:过滤后的资源没有打包在WAR文件中

sms*_*omb 3 resources war filter pom.xml maven

我有一个maven项目,我正在使用maven-war-plugin打包项目:

<packaging>war</packaging>
Run Code Online (Sandbox Code Playgroud)

我已根据我正在构建的环境从属性文件中设置过滤器:

<filters>
    <filter>properties/${env}.properties</filter>
</filters>
Run Code Online (Sandbox Code Playgroud)

我正在尝试过滤位于/ src/main/webapp/WEB-INF/classes中的xml文件:

<resources>
    <resource>
        <directory>${basedir}/src/main/webapp/WEB-INF/classes</directory>
        <filtering>true</filtering>
    </resource>
</resources>
Run Code Online (Sandbox Code Playgroud)

我使用以下命令从命令行构建项目:

basedir> mvn clean package -Denv=dev
Run Code Online (Sandbox Code Playgroud)

这会在我的目标目录中创建以下内容:

--- target
    +-- classes
    +-- project-name
    --- project-name.war
Run Code Online (Sandbox Code Playgroud)

目标/类中的xml文件已正确过滤.但是,不会过滤project-name.war/WEB-INF/classes中的xml文件.

如何修复我的pom文件或项目目录结构以包含打包的war文件中包含的过滤资源?

小智 7

Webapp资源过滤的处理方式不同.这是通过maven-war-plugin完成的:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1.1</version>
    <configuration>
      <filters>
        <filter>properties/${env}.properties</filter>
      </filters>
      <webResources>
        <resource>
          <directory>/src/main/webapp/WEB-INF/classes</directory>
          <filtering>true</filtering>
          <!-- set files to include, defaulted to ** -->
          <includes>
            <include>**/pattern1</include>
          </includes>
          <!-- set files to exclude  -->
          <excludes>
            <exclude>**/pattern2</exclude>
          </excludes>
        </resource>
      </webResources>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)