2015-05-04 44 views
0

我有一个maven项目。在/src/main/resources/我有两个文件foo.propertiesbar.xml。第一个以ISO-8859-1编码,第二个以UTF-8编码。使用不同的编码过滤资源

是否有一种简单的方法可以在不破坏编码的情况下为两个文件获取过滤?

就我所见,我无法在<resource>块中指定编码。似乎只能指定插件本身的编码,但这会导致两个文件都使用相同的编码进行过滤。

理想情况下,我想说明是这样的:

  • 的* .properties - 使用UTF-8
  • 的* .pdf>过滤器 - >使用ISO-8859-1
  • * .XML过滤器 - >不过滤
  • 别的 - >使用默认编码

过滤器这并不觉得自己是一个非常不寻常的情况,有一个简单的方法来配置这个吗?

+0

什么是你的情况的默认编码? UTF 8? – khmarbaise

+0

是的,在我的情况下,默认值是UTF8。一般来说,使用UTF8编写所有内容都是很好的做法,而且对于属性文件来说只有一个例外。 – michas

回答

1

首先,我建议把那些基于到不同的目录一样src/main/iso-resources ISO资源,并使用这样的事:

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

    <name>Resource Test</name> 

    <build> 
    <pluginManagement> 
     <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-resources-plugin</artifactId> 
      <configuration> 
      <nonFilteredFileExtensions> 
       <nonFilteredFileExtension>pdf</nonFilteredFileExtension> 
      </nonFilteredFileExtensions> 
      </configuration> 
     </plugin> 
     </plugins> 
    </pluginManagement> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-resources-plugin</artifactId> 
     <executions> 
      <execution> 
      <id>copy-iso-part</id> 
      <goals><goal>copy-resources</goal></goals> 
      <phase>process-resources</phase> 
      <configuration> 
       <encoding>ISO-8859-1</encoding> 
       <resources> 
       <resource> 
        <directory>src/main/iso-resources/</directory> 
       </resource> 
       </resources> 
       <outputDirectory>${project.build.outputDirectory}</outputDirectory> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build>