2016-03-08 99 views
2

我使用maven使用此配置编译我的项目:Maven的编译UTF-8属性文件

<resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
     </resource> 
    </resources> 
<plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-compiler-plugin</artifactId> 
        <configuration> 
         <encoding>UTF-8</encoding> 
         <source>${java.version}</source> 
         <target>${java.version}</target> 
         <showDeprecation>true</showDeprecation> 
         <showWarnings>true</showWarnings> 
        </configuration> 
       </plugin> 
      </plugins> 

该项目应该是UTF-8,但是按照惯例,.properties文件应该是LATIN1(ISO 8859-1),Eclipse以这种方式对待它们(我知道我可以改变Eclipse的行为方式,但这不是重点)。我使用.properties文件进行国际化。

问题是,使用Eclipse部署到Tomcat,我可以很好地看到我的特殊字符,但是当通过maven编译时(例如通过Jenkins),我得到所有乱码字符,就像Maven翻译所有我的.properties到UTF-8,从而拧紧我所有的i18n消息。

解决此问题的正确方法是什么?感觉这应该是一个非常普遍的问题,但我还没有在网上找到有效的解决方案。

+0

我假设你已经在你的pom文件中定义了某种过滤方式?没有整个POM文件很难看到发生了什么... – khmarbaise

+0

我确实有一些过滤,你认为这可能是问题吗?将这些行添加到我的原始帖子中。 –

+0

只需为包含ISO-LATIN1文件的资源目录创建补充条目并明确禁用过滤。比那些文件应该保留,因为它们是... – khmarbaise

回答

3

只需为包含ISO-LATIN1文件的资源目录创建补充条目并明确关闭过滤。比起那些文件应该保持原样......

BTW:你应该使用的编码属性,如:

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

这是由例如maven-compiler-plugin大量的插件的认可,maven-resources-plugin