2012-01-23 5 views
16

guidelines on the apache siteに従ってmaven pomにカスタムcheckstyle設定を設定しようとすると、非常に単純なケースでは機能しません。Maven Checkstyle configLocationは無視されますか?

私はMavenのが推奨するディレクトリレイアウトを使用して、プロジェクト、MyProjectと、(つまり、SRC /メイン/ Javaの/はsrc /メイン/リソース)、単一のファイルMyClass.java作成:

package com.myproject; 

public class MyClass { 

    public static void main(String[] args) { 
     System.out.println("This line is longer than 80 characters which returns an error in sun_checks.xml, however my_checks.xml allows for much longer lines and will not return a long line error."); 
    } 
} 

空をガイドの仕様に従って

<?xml version="1.0"?> 
<!DOCTYPE module PUBLIC 
    "-//Puppy Crawl//DTD Check Configuration 1.2//EN" 
    "http://www.puppycrawl.com/dtds/configuration_1_2.dtd"> 

<module name="Checker"> 
    <property name="severity" value="warning"/> 
    <module name="TreeWalker"> 
    </module> 
</module> 

及びPOMファイル:ファイルのCheckstyle、my_checks.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/maven-v4_0_0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.myproject</groupId> 
    <artifactId>A_Project</artifactId> 
    <name>A Project</name> 
    <version>1.0.0</version> 

    <reporting> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-checkstyle-plugin</artifactId> 
     <version>2.8</version> 
     <configuration> 
      <configLocation>my_checks.xml</configLocation> 
     </configuration> 
     </plugin> 
    </plugins> 
    </reporting> 
</project> 

'mvn -X checkstyle:checkstyle'を実行すると、my_checks.xmlファイルの設定を使用する代わりにsun_checks.xml(デフォルト)が使用されます。これは、結果のチェックスタイルエラーとデバッグ出力(例: '[DEBUG] request.getConfigLocation()config/sun_checks.xml')。 でCarboniによって説明された戦略を使用してプロパティ内でcheckstyle.config.locationを変更できるため、my_checks.xmlが有効であることはわかっていますが、これはマルチモジュールプロジェクトに移行する際に問題を引き起こします。 '公式の' apache checkstyle命令。

+0

正確にあなたのconfig xmlはありますか? – Corubba

答えて

10

とき、これは私の作品:私はルートレベル(pom.xmlに平行)でmy_checks.xmlを置き、

    1. <build>要素にプラグインをラップ(<reporting>ではなく)

    これらの変更により、次のように表示されます。

    [DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-checkstyle-plugin:2.8:checkstyle' with basic configurator --> 
    [DEBUG] (f) cacheFile = /home/dave/tech/lang/java/web/struts/playground/so/s231_01/target/checkstyle-cachefile 
    [DEBUG] (f) configLocation = my_checks.xml 
    ... etc ... 
    [DEBUG] request.getConfigLocation() my_checks.xml 
    [DEBUG] The resource 'my_checks.xml' was not found with resourceLoader 
    ... etc ... 
    [DEBUG] The resource 'my_checks.xml' was not found with resourceLoader org.codehaus.plexus.resource.loader.URLResourceLoader. 
    [DEBUG] The resource 'my_checks.xml' was not found with resourceLoader org.codehaus.plexus.resource.loader.JarResourceLoader. 
    [DEBUG] The resource 'my_checks.xml' was found as /home/dave/tech/lang/java/web/struts/playground/so/s231_01/my_checks.xml. 
    

    具体的には、usage documentationを参照してください:

    を特別のCheckstyleプラグインを設定するには、以下のサンプルのように、あなたのpom.xmlの<build>セクションにそれを追加する必要があります。

    <reporting>mvn siteです。

  • +2

    ありがとうDave Newton! の代わりにを使用することが問題でした。 Maven Checkstyleガイドがサイトの例の代わりにcheckstyleの例を与えた場合に役立つでしょう。 – HeavyE

    +0

    @HeavyE問題はありません:)技術的にはそうですが、[goals docs](http://maven.apache.org/plugins/maven-checkstyle-plugin/plugin-info.html)では、プラグインとレポートの目標を区別していますしかし、用語に慣れていない方が少し不透明です(Mavenの多くのドキュメントのように) –

    +1

    Maven 3を使用している場合は、https://cwiki.apache.org/MAVEN/maven-3x-compatibilityを参照してください。 -notes.html#Maven3.xCompatibilityNotes-SiteandReporting "セクションのプラグイン設定は、POMのセクションのプラグインに影響しなくなりました。 Maven 2では、レポートとビルドの間にビットを複製する必要があります。 – Bae

    22

    ええ、私は古いバージョンのapacheサイトのガイドラインを見つけました。インターネットをトロールして一緒に捨てることによって、私はこれを解決することができました。

    タグに移動するのはしばらくの間行われましたが、最新のチェックスタイルに更新されたときに再び無視されていました。私はプロパティを設定しなければならなかったことがわかりました:

    <project ...> 
    
    .... 
    
        <properties> 
        <checkstyle.config.location>properties/checkstyle-configuration.xml</checkstyle.config.location> 
        </properties> 
    
        <build> 
        ... 
    
         <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-checkstyle-plugin</artifactId> 
         <version>2.9.1</version> 
         </plugin> 
        </plugins> 
        </build> 
    
        ... 
    
    </project> 
    

    これはここに見つけるあなた自身のCheckstyleのカスタムチェックを作成する方法の私の例の一部です:
    http://blog.blundellapps.com/create-your-own-checkstyle-check/

    を、ここでソースコードから取ら:
    https://github.com/blundell/CreateYourOwnCheckStyleCheck

    +1

    Thx! '' 注:私は場所にファイルを追加する必要がありました。 – IDKFA

    関連する問題