【问题标题】:How to exclude separate files with nonFilteredFileExtension如何使用 nonFilteredFileExtension 排除单独的文件
【发布时间】:2015-03-04 12:25:30
【问题描述】:

我有这个包。

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

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

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

为了解决问题,我们将此配置用于 ma​​ven-resources-plugin 即我们为 properties 扩展添加了 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

【问题讨论】:

    标签: maven


    【解决方案1】:

    首先,您应该尝试通过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

    【讨论】:

      猜你喜欢
      • 2017-05-31
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-19
      • 1970-01-01
      • 2013-03-14
      相关资源
      最近更新 更多