2012-02-08 5 views
12

Staram:Jak mogę uzyskać kompilację java maven, aby nie wyświetlać ostrzeżeń kompilatora?

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
       <compilerArgument>-Werror</compilerArgument> 
       <fork>true</fork> 
      </configuration> 
     </plugin> 

ale bez radości. Masz teraz jakieś pomysły, aby uzyskać średniowieczne informacje na temat błędów sugerowanych pod numerem this blog post?

+0

Wystąpił błąd opisany poniżej, który nie stanowi już problemu. Ten formularz, jak określono za pomocą compilerArgument, działa świetnie. –

Odpowiedz

1

EDIT: Ta odpowiedź jest przestarzały jednak nie mogę go usunąć, jak to było przyjęte odpowiedź w tym czasie.

To błąd z Mavenem zobacz: http://jira.codehaus.org/browse/MCOMPILER-120 został naprawiony w wersji 2.4 wtyczki kompilatora Mavena, ale nie wierzę, że został już wydany. Tag nie będzie działać niestety.

+0

maven-compiler-plugin 2.4 jest już wydany dla Maven Central – yegor256

+0

Tak, ale nie było, gdy podałem odpowiedź. –

+1

Dla jasności, ten błąd nie jest już problemem, a forma podana w pytaniu działa świetnie. –

0

Istnieje alternatywna forma może spróbować? Należy zwrócić uwagę na S na końcu <compilerArguments>

<configuration> 
    <compilerArguments> 
     <Werror /> 
    </compilerArguments> 
</configuration> 
0

Dzięki zastosowaniu obejścia w wersji this comment w wersji open jira issue dla wtyczki kompilatora maven kompilacja może przestać działać.

Działa to dla mnie:

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>2.3.2</version> 
     <configuration> 
      <compilerId>javac</compilerId> 
      <source>1.6</source> 
      <target>1.6</target> 
      <compilerArgument>-Werror</compilerArgument> 
      <showDeprecation>true</showDeprecation> 
     </configuration> 

     <dependencies> 
      <dependency> 
       <groupId>org.codehaus.plexus</groupId> 
       <artifactId>plexus-compiler-api</artifactId> 
       <version>1.8.2</version> 
       <exclusions> 
        <exclusion> 
        <groupId>org.codehaus.plexus</groupId> 
        <artifactId>plexus-component-api</artifactId> 
        </exclusion> 
       </exclusions> 
      </dependency> 
      <dependency> 
       <groupId>org.codehaus.plexus</groupId> 
       <artifactId>plexus-compiler-manager</artifactId> 
       <version>1.8.2</version> 
       <exclusions> 
        <exclusion> 
        <groupId>org.codehaus.plexus</groupId> 
        <artifactId>plexus-component-api</artifactId> 
        </exclusion> 
       </exclusions> 
      </dependency> 
      <dependency> 
       <groupId>org.codehaus.plexus</groupId> 
       <artifactId>plexus-compiler-javac</artifactId> 
       <version>1.8.2</version> 
       <scope>runtime</scope> 
       <exclusions> 
        <exclusion> 
         <groupId>org.codehaus.plexus</groupId> 
         <artifactId>plexus-component-api</artifactId> 
        </exclusion> 
       </exclusions> 
      </dependency> 
     </dependencies> 
    </plugin> 
20

Aktualizacja na rok 2015, przy użyciu Maven 3.3 i Java 8.

Oto minimalna konfiguracja kompilatora, który włącza wszystkie ostrzeżenia i sprawia kompilacja nie ilekroć ostrzeżenia pojawić się.

<plugins> 
    <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.3</version> 
     <configuration> 
      <source>1.8</source> 
      <target>1.8</target> 
      <showWarnings>true</showWarnings> 
      <compilerArgs> 
       <arg>-Xlint:all</arg> 
       <arg>-Werror</arg> 
      </compilerArgs> 
     </configuration> 
    </plugin> 
</plugins> 

Bity Uwaga: wymagana jest

  • <showWarnings>true</showWarnings>. Z nieznanych powodów, Maven domyślnie aktywnie pomija ostrzeżenia z flagą -nowarn, więc flagi -Xlint i -Werror zostaną zignorowane.
  • showDeprecation nie musi być włączona, ponieważ -Xlint:all emituje już ostrzeżenia o wycofaniu.
  • Eksperymentacja pokazuje, że fork nie musi być włączona, mimo że dokumentacja mówi inaczej.
+0

Chciałbym pominąć 'groupId' dla wbudowanych wtyczek Mavena, aby podkreślić ich wyjątkową pozycję jako wbudowane. Wbudowane wtyczki Maven mają domyślny identyfikator grupy "org.apache.maven.plugins", więc nie trzeba go określać w POM. (Spróbuj 'mvn help: effective-pom', aby to sprawdzić.) – glts

2

Nowość w maven-compiler-plugin 3.6.0: flaga . Ten pracował dla mnie:

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.6.0</version> 
    <executions> 
     <execution> 
     <id>compile</id> 
     <phase>process-sources</phase> 
     <goals> 
      <goal>compile</goal> 
     </goals> 
     <configuration> 
      <compilerArgument>-Xlint:-processing</compilerArgument> 
      <failOnWarning>true</failOnWarning> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

Zauważ, że miałem do wykluczenia szarpie processing lub inaczej adnotacje auto-materia byłaby złamać budować z tajemniczy „symbol nie znaleziono” błędów.

+1

Powyższa odpowiedź działa, chociaż próbowałem sprawić, aby działała bez ustawienia '-Xlint' i to się nie udało. Znalazłem ' true' jest takie samo jak ' -Werror'. Samo "-Werror" nie robi nic, ponieważ musi być sparowane z '-Xlint: all'. Samo " true' nic też nie robi. –