2010-02-17 11 views
7

Używam wtyczki checkstyle w maven 2. Teraz chcę przełączyć mój plik konfiguracyjny, z domyślnego na a) plik online, lub b) plik lokalny. Próbowałem dwóch rzeczy, które nie działały. Jakieś sugestie?Maven 2 checkstyle plugin wersja 2.5 - Problem z configLocation

A) plik lokalny, który jest bezpośrednio w moim folderze projektu obok pom.xml

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-checkstyle-plugin</artifactId> 
    <configuration> 
     <configLocation>checkstyle.xml</configLocation> 
    </configuration> 
</plugin> 

B) zdalny plik, który jest przechowywany na serwerze

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-checkstyle-plugin</artifactId> 
    <configuration> 
     <configLocation>http://stud.hs-heilbronn.de/~nischmid/development/checkstyle-config.xml</configLocation> 
    </configuration> 
</plugin> 

Oba przypadki wynikać w takim błędzie:

[INFO] An error has occurred in Checkstyle report generation. Embedded error: Failed during checkstyle execution Could not find resource 'file:checkstyle.xml'.

Każda pomoc będzie doceniona!

Odpowiedz

6

Widziałem kilka kwestii związanych z configLocation w Jira z wersji 2.5 wtyczki (jak MCHECKSTYLE-129 lub MCHECKSTYLE-131), zarówno a) i b) po prostu działać poprawnie z wersją 2.4.

Więc, chyba że używasz Maven 3, proponuję wycofać do 2,4 teraz:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-checkstyle-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
    <configLocation>checkstyle.xml</configLocation> 
    </configuration> 
</plugins> 

lub

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-checkstyle-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
    <configLocation>http://stud.hs-heilbronn.de/~nischmid/development/checkstyle-config.xml</configLocation> 
    </configuration> 
</plugin> 

Na marginesie, przy użyciu wielu modułów budować, spójrz na Multimodule Configuration.

+0

Powrót do wersji 2.4 rozwiązał problem a), jednak problem b) jest odporny. Postępowałem zgodnie z instrukcjami podanymi w MCHECKSTYLE-129, które rozwiązały problem b). Mam więc wtyczkę checkstyle w wersji 2.5 ze splotem zasobów 1.0-alfa-7-SNAPSHOT i wszystko działa dobrze. Dzięki Pascal! –

+0

@Nils Weird, testowałem b) z Twoim adresem URL i działało dla mnie z 2.4. W każdym razie, jeśli rozwiązałeś to z 2.5 przez dodanie zależności od zasobów splotu, to jest w porządku :) –

5

Próbowałem użyć wersji 3.0.1 wtyczki Checkstyle i znalazłem configLocation bez efektu. Próbowałem powyższego podejścia, ale wciąż nie miałem szczęścia.

Podsumowując, powyższa odpowiedź prawdopodobnie zadziała, ale konieczne może być ustawienie właściwości checkstyle.config.location.

Korzystanie -X dostać wyjście debugowania, widziałem:

[DEBUG] (f) configLocation = config/sun_checks.xml 

Przewijanie dalej w dzienniku, wygląda configLocation nie jest ustawiony:

<configLocation default-value="config/sun_checks.xml">${checkstyle.config.location}</configLocation> 

podstawie tej wiadomości Ustawiam tę usługę na poziomie globalnym <properties> w następujący sposób:

<checkstyle.config.location>${basedir}/config/checkstyle-configuration.xml</checkstyle.config.location> 

To działało, ale spowodowało, że wtyczka wyrzuciła wyjątek. Po pewnym Googling, dodałem następujące pliku konfiguracyjnego Checkstyle:

<module name="Checker"> 
    ... 
    <module name="TreeWalker"> 
    ... 
    <property name="cacheFile" value=""/> 

Dla kompletności, ostatni krok przyszedł z poniższego Jira, oznaczone jako rozwiązane w 2.8. Różnica polega na tym, że wydaje się działać z pustą wartość, unikając konieczności ustanowienia własności ${cachefile}:

http://jira.codehaus.org/browse/MCHECKSTYLE-159

+0

Musiałam jednak wstawić "file: //" z przodu. file: // $ {basedir} /config/checkstyle-configuration.xml

1

Może pomocne dla kogoś, kto potrzebuje jeszcze znaleźć obejście. Przy okazji miałem ten sam problem i plik powinien być przeszukiwany w /classes/.xml lub folderach stąd.Ale ponieważ patrzy bezpośrednio po folderze projektu i uwzględniony

<configuration> 
<configLocation>src\main\resources\checkstyle-checker-dev.xml</configLocation> 
</configuration> 

Uwaga: configLocation ma L czapki

Ponadto można zdefiniować zmienną globalną w środowisku i wykorzystanie tutaj Uwaga: Jest to tylko obejście, musi działać zgodnie z powyższymi liniami.

Powiązane problemy