2012-01-23 15 views
16

Próba ustawienia niestandardowej konfiguracji konspektu w maven pom zgodnie z guidelines on the apache site nie działa w bardzo prostym przypadku.Maven Checkstyle configLocation jest ignorowane?

stworzyłem projekt, myproject, wykorzystując układ katalogów zalecaną przez Maven (tj src/main/java /, src/main/zasobów), pojedynczy MyClass.java pliku:

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."); 
    } 
} 

pusty Checkstyle plik, 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> 

i plik POM zgodnie ze specyfikacjami w przewodniku:

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

Uruchamianie "mvn -X checkstyle: checkstyle" używa pliku sun_checks.xml (domyślnie) zamiast korzystania z konfiguracji w pliku my_checks.xml, która jest widoczna zarówno dla wynikowych błędów checkstyle, jak i dla danych wyjściowych debugowania (np. "[DEBUG] request.getConfigLocation() config/sun_checks.xml").

Wiem, że plik my_checks.xml jest poprawny, ponieważ można zmienić właściwości checkstyle.config.location we właściwościach przy użyciu strategii określonej przez Carboni w , ale powoduje to problemy podczas przenoszenia do projektów wielomodułowych i różni się od "oficjalne" instrukcje dotyczące stylu apache maven.

+0

Gdzie dokładnie znajduje się twój plik konfiguracyjny xml? – Corubba

Odpowiedz

10

To działa na mnie, gdy:

  1. I miejsce my_checks.xml na poziomie głównym (równolegle do pom.xml) i
  2. Wrap wtyczki w elemencie <build> (w przeciwieństwie do <reporting>)

Po tych zmianach widzę:

[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. 

proszę odwoływać się do usage documentation, a konkretnie:

specjalnie skonfigurować Checkstyle wtyczki, trzeba dodać to do w sekcji <build> swojej pom.xml, jak pokazano w poniższym przykładzie.

Wykorzystanie <reporting> jest dla .

+2

Dzięki Dave Newton! Używanie zamiast było problemem. Byłoby pomocne, gdyby przewodnik Maven Checkstyle podał przykłady pokazów zamiast przykładów witryn. – HeavyE

+0

@HeavyE Nie ma problemu :) Technicznie tak jest, a [dokumenty do celów] (http://maven.apache.org/plugins/maven-checkstyle-plugin/plugin-info.html) rozróżniają cele wtyczki i raportowania , ale jest nieco nieprzejrzysty, jeśli nie jesteś całkiem zadowolony z terminologii (tak jak wiele dokumentacji Maven;) –

+1

Jeśli korzystasz z Maven 3, zobacz https://cwiki.apache.org/MAVEN/maven-3x-compatibility -notes.html # Maven3.xCompatibilityNotes-SiteandReporting "konfiguracja wtyczki w sekcji nie ma już wpływu na wtyczki w sekcji POM. ". W przypadku Maven 2 może być konieczne duplikowanie bitów między raportowaniem a kompilacją. – Bae

22

Tak, znalazłem wytyczne na stronie apache nieaktualne. Poprzez wspólne trałowanie internetu i bicie złomu udało mi się to rozwiązać.

Przejście na znacznik <build> było przez jakiś czas wykonywane, ale po zaktualizowaniu do najnowszej wersji, ponownie było ignorowane.Znalazłem musiałem ustawić właściwość:

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

To jest część mojego przykład jak stworzyć własną niestandardową Checkstyle czek znaleźć tutaj:
http://blog.blundellapps.com/create-your-own-checkstyle-check/

i pochodzi z kodem źródłowym tutaj :
https://github.com/blundell/CreateYourOwnCheckStyleCheck

+1

Thx! działa to również dla innych właściwości konfiguracji: '' Uwaga: Musiałem dodać plik: do lokalizacji – IDKFA

Powiązane problemy