Maven编译器:Xlint和showWarnings之间的区别

时间:2018-09-24 19:29:45

标签: maven javac maven-compiler-plugin

According to documentation,我可以使用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,尤其是"enables all recommended warnings"-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 :(得分:1)

compilerArgs控制Java编译器的行为。这些设置将传递给编译器,并且不会被maven-compiler-plugin直接使用。使用Xlint可以控制Java编译器在编译过程中输出的警告。您还可以添加例如-Werror会在出现警告时中止编译(通常,这是一个好习惯)。

另一方面,showWarnings配置是maven-compiler-plugin的设置(未传递给Java编译器)。它控制插件是否将输出由Java编译器生成的警告。因此,如果将其设置为false(我真的不明白为什么这是默认值),您将看不到Java编译器生成的警告。更糟糕的是,即使您在compileArgs中设置了-Werror,构建也会不会失败