2016-03-08 80 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