2012-01-23 10 views
16

guidelines on the apache site के अनुसार मेवेन पोम में एक कस्टम चेकस्टाइल कॉन्फ़िगरेशन सेट करने का प्रयास बहुत ही सरल मामले में काम नहीं कर रहा है।मेवेन चेकस्टाइल configLocation अनदेखा?

मैं एक परियोजना, MyProject, Maven द्वारा सिफारिश की (यानी src/मुख्य/जावा /, 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."); 
    } 
} 

एक खाली checkstyle फ़ाइल, my_checks.xml:

<?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> 

और एक पोम फ़ाइल गाइड में विनिर्देशों के अनुसार:

<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 चेकस्टाइल: चेकस्टाइल' my_checks.xml फ़ाइल में कॉन्फ़िगरेशन का उपयोग करने के बजाय sun_checks.xml (डिफ़ॉल्ट) का उपयोग कर रहा है, जिसे परिणामी चेकस्टाइल त्रुटियों और डीबग आउटपुट दोनों द्वारा देखा जा सकता है (उदा। '[DEBUG] request.getConfigLocation() config/sun_checks.xml')।

मुझे पता है कि my_checks.xml मान्य है क्योंकि में कार्बोनी द्वारा उल्लिखित रणनीति का उपयोग करके गुणों में checkstyle.config.location को बदला जा सकता है, लेकिन बहु-मॉड्यूल परियोजनाओं में जाने पर यह समस्याएं उत्पन्न होती है और इससे भिन्न होती है 'आधिकारिक' अपाचे मावेन चेकस्टाइल निर्देश।

+0

आपकी कॉन्फ़िगरेशन xml कहां स्थित है? – Corubba

उत्तर

10

यह मेरे लिए काम करता है जब:

  1. मैं रूट स्तर पर my_checks.xml जगह (pom.xml के समानांतर), और
  2. लपेटें <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

धन्यवाद डेव न्यूटन! के बजाय का उपयोग करना समस्या थी। अगर मैवेन चेकस्टाइल गाइड ने साइट उदाहरणों के बजाय चेकस्टाइल उदाहरण दिए तो यह सहायक होगा। – HeavyE

+0

@ हेवी कोई समस्या नहीं :) तकनीकी रूप से यह करता है, और [लक्ष्यों के दस्तावेज़] (http://maven.apache.org/plugins/maven-checkstyle-plugin/plugin-info.html) प्लगइन और रिपोर्टिंग लक्ष्यों के बीच अंतर करते हैं , लेकिन यह थोड़ा अपारदर्शी है यदि आप शब्दावली के साथ बहुत सहज नहीं हैं (जैसा कि बहुत मेवेन दस्तावेज है;) –

+1

यदि आप मेवेन 3 का उपयोग कर रहे हैं, तो https://cwiki.apache.org/MAVEN/maven-3x-compatibility देखें -notes.html # Maven3.xCompatibilityNotes-Siteand रिपोर्टिंग " अनुभाग में प्लगइन कॉन्फ़िगरेशन अब पीओएम के अनुभाग में प्लगइन को प्रभावित नहीं करता है।" मेवेन 2 के लिए आपको रिपोर्टिंग और निर्माण के बीच बिट्स को डुप्लिकेट करने की आवश्यकता हो सकती है। – Bae

22

हाँ मुझे अपाचे साइट पर दिशानिर्देश मिल गए हैं। इंटरनेट को घुमाने और बिट्स को स्क्रैप करने के माध्यम से मैंने इसे काम करने में कामयाब रहा है।

<build> टैग पर जाने के लिए थोड़ी देर के लिए काम किया गया लेकिन नवीनतम चेकस्टाइल में अपडेट होने पर इसे फिर से अनदेखा किया जा रहा था।मैंने पाया कि मैं एक गुण सेट करना पड़ा:

<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

संबंधित मुद्दे