8

私はMavenベースのWebプロジェクトを開発しています。私のWebモジュールでは、さまざまな言語固有のリソースバンドル(ドイツ語、スペインなど)を使用しています。私のソースはすべてUTF-8に基づいており、すべてが正常に機能します。ここで、異なるMavenプロファイルに応じて一部の構成を置き換えるために、Mavenリソースフィルタリングをアクティブ化する必要がありました。

私のpom.xml:

.....
 <project xmlns="http://maven.apache.org/POM/4.0.0"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
.....

 <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 </properties>    
 <build>
 <resources>
    <resource>
    <directory>src/main/resources</directory>
        <filtering>true</filtering>             
    </resource>      
 </resources>
 ....

この瞬間から、私のwarファイルには間違ったエンコーディングのリソースバンドルが含まれています。たとえば、ドイツ語のウムラウトがWebアプリケーションに正しく表示されなくなりました。リソースフィルタリングを無効にすると、すべてが再びうまくいきます。

私が見つけた唯一の解決策は、プロパティproject.build.sourceEncodingを「ISO-8859-1」に設定することでした。

<properties>
  <project.build.sourceEncoding>ISO-8859-1</project.build.sourceEncoding>
</properties>

しかし、なぜこれが必要なのか理解できませんか?私のソースはすべてUTF-8であり、アプリケーションはUTF-8に基づいていますか?たとえば日本語の文字を含むリソースバンドルを追加する必要がある場合はどうなりますか?

Eclipse4.2とMaven3を使用してLinuxで開発しています

4

6 に答える 6

4

次のように、リソース プラグイン構成でエンコーディングを指定できます。

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.6</version>
        <configuration>
          ...
          <encoding>UTF-8</encoding>
          ...
        </configuration>
      </plugin>
    </plugins>
    ...
  </build>
  ...
</project>

ドキュメントへのリンク

于 2013-01-14T21:57:05.970 に答える
4

リソース バンドル (.properties) が使用していることは確かUTF-8ですか?

java.util.PropertiesISO-8859-1リソースバンドルのエンコーディングを想定しています。 http://docs.oracle.com/javase/6/docs/api/java/util/Properties.html#load(java.io.Reader)を参照してください。 IntelliJ IDEA) は、これらのファイル (.properties) のこのデフォルトのエンコーディングを尊重します。

したがって、プロジェクト ソース ツリーでこれらのファイルの現在のエンコーディングをテキスト エディタで確認してください。Windows では、メモ帳 2が役立ちます。

そして、maven-resources-pluginここに示されているように構成します Mavenで異なるファイルタイプのエンコードを構成しますか?

于 2014-04-06T05:15:06.950 に答える
0

ご質問に対する回答ではありませんが(申し訳ありません)、物件に関する有益な情報だと思いますproject.build.sourceEncoding

このプロパティは、Maven プロジェクトでのエンコーディング管理を簡素化する試みです。

プラグイン構成自体でエンコーディングが指定されていない場合は常に、すべてのプラグインがデフォルトのエンコーディング値として使用するという考え方です。このプロパティをデフォルトのエンコーディング値として使用するかどうかは、プラグイン開発者向けの推奨事項にすぎません。

これはすべての主要な最近のプラグインで行われていると思いますが、1 つの重要な例外は、バージョン 2.2 より前の maven-war-plugin です。

ソース:

  • についての議論project.build.sourceEncodingここにあります。
  • war-plugin エンコーディングの詳細はこちら.
于 2013-01-16T11:09:59.233 に答える