Maven 编译器:Xlint 和 showWarnings 之间的区别
Maven compiler : difference between Xlint and showWarnings
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,特别是 -Xlint:all
which "enables all recommended warnings" :
<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>
这两个选项是否严格等价?如果不是,有什么区别?
compilerArgs
控制 java 编译器的行为。这些设置被传递给编译器,而不是被 maven-compiler-plugin 直接使用。使用 Xlint
您可以控制 java 编译器从编译过程中输出哪些警告。您还可以添加例如-Werror
在出现警告时中止编译(这通常是一个好习惯)。
另一方面,showWarnings
配置是 maven-compiler-plugin 的设置(不会传递给 java 编译器)。它控制插件是否输出 java 编译器生成的警告。所以如果你将它设置为 false(我真的不明白为什么这是默认值),你将看不到 java 编译器生成的警告。更糟糕的是,即使您在 compilerArgs.
中设置了 -Werror
,构建也不会 失败
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,特别是 -Xlint:all
which "enables all recommended warnings" :
<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>
这两个选项是否严格等价?如果不是,有什么区别?
compilerArgs
控制 java 编译器的行为。这些设置被传递给编译器,而不是被 maven-compiler-plugin 直接使用。使用 Xlint
您可以控制 java 编译器从编译过程中输出哪些警告。您还可以添加例如-Werror
在出现警告时中止编译(这通常是一个好习惯)。
另一方面,showWarnings
配置是 maven-compiler-plugin 的设置(不会传递给 java 编译器)。它控制插件是否输出 java 编译器生成的警告。所以如果你将它设置为 false(我真的不明白为什么这是默认值),你将看不到 java 编译器生成的警告。更糟糕的是,即使您在 compilerArgs.
-Werror
,构建也不会 失败