2012-10-31 20 views
6

Mam dwa projekty Maven:Wiadomości z Diagnostic.Kind.NOTE poziomu (i innych) na procesorach adnotacji

  • Pierwszy definiuje adnotacji, procesor adnotacji oraz plik konfiguracyjny-dostawca, aby uruchomić procesor adnotacji za pośrednictwem interfejsu ServiceLoader API.
  • Innym zależy na pierwszym i określa pewne klas i interfejsów, a jednym z nich jest opatrzone adnotacją określonej w pierwszym projekcie.

Przywołuję kompilację drugiego projektu (po zbudowaniu i zainstalowaniu pierwszego) z numerem mvn clean && mvn compile, aby upewnić się, że nastąpi kompilacja i zostanie uruchomione przetwarzanie adnotacji. Działa zgodnie z oczekiwaniami: prosty procesor annontacji po prostu generuje plik zasobów w katalogu target/classes/ zawierający jakieś fałszywe dane.

Podczas próby wyprowadzenia niektórych informacji za pomocą processingEnv.getMessager().printMessage(...) zacząłem mieć pewne problemy. Jeśli użyję Diagnostic.Kind.ERROR, kompilacja zatrzyma się i wydrukuje komunikat, jak można się spodziewać. Jednakże, z każdym innym Kind (takim jak NOTE lub WARNING), wiadomość nie jest zapisana na ekranie!

Niektóre informacje o moim otoczeniu:

Kubuntu 12.10 
Linux 3.5.0-17-generic 
Apache Maven 3.0.4 (r1232337; 2012-01-17 06:44:56-0200) 
Java version: 1.7.0_09, vendor: Oracle Corporation 

nie jawnie zadeklarować wersję maven-compiler-plugin wszędzie, więc musi być używana wersja domyślnego (? 2.3.2 nie jestem pewien).

Jak włączyć wyjście wszystkich Kind s wiadomości w tej konfiguracji? (tzn. uruchomienie procesora annumentacji przez maven)

Odpowiedz

3

Spróbuj dodać następujące wiersze:

<configuration> 
    <showWarnings>true</showWarnings> 
</configuration> 

do maven definicji kompilator-plugin w pom.xml projektu. To rozwiązanie działa dla mnie.

Patrz: https://gist.github.com/esamson/0777b97adde4c2f9bc31

+0

Próbowałem POM obiekt ' true' a także pracował. –