Компилятор Maven: разница между Xlint и showWarnings - PullRequest
0 голосов
/ 24 сентября 2018

Согласно документации , я могу настроить maven-compiler-plugin для отображения предупреждений с помощью тега <showWarnings>:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.8.0</version>
  <configuration>
    <showWarnings>true</showWarnings>
  </configuration>
</plugin>

Я также могу настроить плагин для передачи аргументов в javac,в частности -Xlint:all, который "включает все рекомендуемые предупреждения" :

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.8.0</version>
  <configuration>
    <compilerArgs>
      <arg>-Xlint:all</arg>
    </compilerArgs>
  </configuration>
</plugin>

Являются ли эти два параметра строго эквивалентными?Если нет, то в чем разница?

1 Ответ

0 голосов
/ 25 сентября 2018

compilerArgs контролирует поведение Java-компилятора.Эти настройки передаются компилятору и не используются напрямую maven-compiler-plugin.Используя Xlint, вы можете контролировать, какие предупреждения выводит компилятор Java из процесса компиляции.Вы также можете добавить, например, -Werror, чтобы прервать компиляцию после предупреждений (что в целом является хорошей практикой).

Конфигурация showWarnings, с другой стороны, является настройкой для подключаемого модуля maven-compiler-plugin (не передается компилятору java).Он контролирует, будет ли плагин выводить предупреждения, сгенерированные компилятором java.Так что если вы установите его в false (я действительно не понимаю, почему это по умолчанию), вы не увидите предупреждений, сгенерированных компилятором java.Хуже того, сборка не завершится с ошибкой , даже если вы установили -Werror в compilerArgs.

...