Ответ 1
Это ошибка с Maven: http://jira.codehaus.org/browse/MCOMPILER-120 исправлено в 2.4 плагина Maven-компилятора, но я не верю который был выпущен еще. тег не будет работать, к сожалению.
Я пытаюсь:
<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>
но без радости. Любые идеи теперь, чтобы получить средневековье при таких ошибках, как предлагалось в этом сообщении в блоге?
Это ошибка с Maven: http://jira.codehaus.org/browse/MCOMPILER-120 исправлено в 2.4 плагина Maven-компилятора, но я не верю который был выпущен еще. тег не будет работать, к сожалению.
Обновление для 2015 года с использованием Maven 3.3 и Java 8.
Здесь минимальная конфигурация компилятора, которая разрешает все предупреждения и делает сбой сборки при возникновении предупреждений.
<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>
Примечание:
<showWarnings>true</showWarnings>
. По неизвестным причинам Maven по умолчанию активно подавляет предупреждения с флагом -nowarn
, поэтому флаги -Xlint
и -Werror
будут игнорироваться.showDeprecation
не нужно включать, потому что -Xlint:all
уже выдает предупреждения об отказе.fork
не нужно включать, хотя
в документации указано иное.Новое в maven-compiler-plugin
3.6.0: флаг failOnWarning
. Это сработало для меня:
<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>
Обратите внимание, что я должен был исключить processing
lint или иначе аннотации auto-matter, чтобы сломать сборку с криптоватыми ошибками "символ не найден".
Есть альтернативная форма, возможно, попробовать? Обратите внимание на s в конце <compilerArguments>
<configuration>
<compilerArguments>
<Werror />
</compilerArguments>
</configuration>
Используя обходной путь в этот комментарий в открыть jira issue для плагина компилятора maven, сборка может быть неудачной для предупреждения компилятора.
Это работает для меня:
<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>