2016-06-13 12 views
3

簡単なこと:選択したファイル(.java.xml)が正しくエンコードされていない場合(私はソースファイルにUTF-8を適用したい)、checkstyleを使用してビルドを中断できるようにしたい。checkstyle-pluginを使用してソースファイル内で使用されているエンコーディングを検証する方法は?

私は現在、正しいLineFeedsやタブ文字の使用など、いくつかのビルドブレーカーにcheckstyleを使用していますが、FileEncodingCheckerのようには見えません。

質問:checkstyleでこれを行うことはできません:このジョブを実行する可能性のある別のプラグインはありますか?

答えて

2

Mavenエンコーディング(ソースとリソース)は標準のproject.build.sourceEncodingプロパティで処理されます。これは実際には存在し、UTF-8という値に設定するのがよい方法です。 maven-resources-plugin

のベストプラクティスの公式ドキュメントから
は、このプロパティは次のようにピックアップされ

ポンポンプロパティセクションで定義する必要があるプロパティ${project.build.sourceEncoding}で濾過リソースをコピーするためのエンコーディングを定義することですmaven-compiler-pluginencodingプロパティのデフォルト値とmaven-resources-pluginencodingプロパティです。さらにその存在を強制するために


、あなたがしてUTF-8project.build.sourceEncoding財産の存在とその値を強制するために、maven-enforcer-pluginとそのrequirePropertyルールを使用することができます。つまり、プロパティが設定されておらず、この正確な値を持たない場合、ビルドは失敗します。同じことがproject.reporting.outputEncodingプロパティのために行うことができる、

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-enforcer-plugin</artifactId> 
    <version>1.4.1</version> 
    <executions> 
     <execution> 
      <id>enforce-property</id> 
      <goals> 
       <goal>enforce</goal> 
      </goals> 
      <configuration> 
       <rules> 
        <requireProperty> 
         <property>project.build.sourceEncoding</property> 
         <message>Encoding must be set and at UTF-8!</message> 
         <regex>UTF-8</regex> 
         <regexMessage>Encoding must be set and at UTF-8</regexMessage> 
        </requireProperty> 
       </rules> 
       <fail>true</fail> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

注:このような構成の例以下は

は、あなたの pom.xmlファイルに build/pluginsセクションを追加します。


スタックオーバーフローの深い読み:


ボーナス:私たちは、スタックオーバーフローの上なので、最高経営責任者(CEO)は、おそらく再び彼の昔の記事を見て幸せになる:次のJavaコードを考えるとThe Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets


テスト

package com.sample; 

public class Main { 

    public void 漢字() { 
    } 

} 

とMavenで次のように設定します。

<properties> 
    <project.build.sourceEncoding>US-ASCII</project.build.sourceEncoding> 
</properties> 

US-ASCIIは7ビットであり、誤った文字エラーが発生するため、ビルドに失敗します。同じことがUTF-8では起こらず、代わりに8ビットを使用します。

+0

@ a-di-matteo:この広範な答えをありがとう、完璧に私のために動作します。私はまだいくつかの(IMHO)シンプルなビルドの崩壊シナリオを達成するために2つのプラグインを使用することに少し不満を感じています。 – Rob

関連する問題