如何使用nonFilteredFileExtension排除单独的文件

时间:2015-03-04 12:25:30

标签: maven

我有这个包。

admin.common.upper_case=Uma ou mais letras maiúsculas

在构建项目期间,此捆绑包已损坏。

admin.common.upper_case=Uma ou mais letras mai�sculas

为了解决问题,我们将此配置用于 maven-resources-plugin 即我们为属性扩展名添加了 nonFilteredFileExtension 标记。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        <nonFilteredFileExtensions>
            <nonFilteredFileExtension>properties</nonFilteredFileExtension>
        </nonFilteredFileExtensions>
    </configuration>
</plugin>

此配置导致另一个属性文件出现问题,例如 build.properties

build.version=${project.version}
static.url.version=${project.build.timestamp}

我们尝试使用此配置(即添加过滤器标记以过滤build.properties文件):

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        <filters>
            <filter>properties/build.properties</filter>
        </filters>
        <nonFilteredFileExtensions>
            <nonFilteredFileExtension>properties</nonFilteredFileExtension>
        </nonFilteredFileExtensions>
    </configuration>
</plugin>

此外,我们尝试使用此配置以避免过滤当前捆绑包:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        <webResources>
            <resource>
                <directory>src/main/resources</directory>
                <!-- enable filtering -->
                <filtering>true</filtering>
                <excludes>
                    <exclude>${basedir}/src/main/resources/one.properties</exclude>
                    <exclude>${basedir}/src/main/resources/two.properties</exclude>
                </excludes>
            </resource>
        </webResources>
    </configuration>
</plugin>

问题是如何只允许过滤此属性文件 build.properties

1 个答案:

答案 0 :(得分:0)

首先,您应该尝试通过Specifying a character encoding scheme修复问题的根源:

<project ...>
 ...
 <properties>
   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   ...
 </properties>
 ..
</project>

执行所需操作的一种方法是指定要包含的文件和要排除的文件。来自documentation

<project>
  ...
  <name>My Resources Plugin Practice Project</name>
  ...
  <build>
    ...
    <resources>
      <resource>
        <directory>src/my-resources</directory>
        <includes>
          <include>**/*.txt</include>
        </includes>
        <excludes>
          <exclude>**/*test*.*</exclude>
        </excludes>
      </resource>
      ...
    </resources>
    ...
  </build>
  ...
</project>

元素includeexclude也适用于path/to/abc.properties等特定文件。