如何将-Xlint:deprecation或-Xlint:unchecked传递给Maven?

时间:2019-05-16 04:48:21

标签: java maven

在构建项目时,出现类似以下错误:

NodePort

但是当我将[INFO] SomeClass.java: Some input files use or override a deprecated API. [INFO] SomeClass.java: Recompile with -Xlint:deprecation for details. [INFO] SomeClass.java: Some input files use unchecked or unsafe operations. [INFO] SomeClass.java: Recompile with -Xlint:unchecked for details. -Xlint:deprecation放在-Xlint:uncheckedMAVEN_OPTS中时,我得到:

.mvn/maven.config

有什么作用?

1 个答案:

答案 0 :(得分:0)

$ MAVEN_OPTS="-Xlint:unchecked " mvn -B clean test Unrecognized option: -Xlint:unchecked Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. 是编译器选项,不是maven选项或jvm选项。

在命令行上,maven接受-Xlint,但将其视为-Xlint maven选项(“调试”),而忽略其余部分。因此它没有预期的效果。

在这两个编译器选项的特定情况下,您可以设置Maven属性,以设置所需的编译器选项。将它们放在您项目的.mvn/maven.config-X env var或命令行中:

MAVEN_OPTS

请参见maven compiler plugin

您还可以在-Dmaven.compiler.showWarnings=true -Dmaven.compiler.showDeprecation=true 或Maven compilerArgs用户定义的配置文件中使用pom.xml属性。我看不到将列表值属性设置为系统属性的方法。您don't have user properties不能使用settings.xmlcompilerArgument

您可能还会发现控制编译器的日志记录级别很有用;例如,您可以使用以下方法使这些警告静音:

compilerArguments

请注意,显式设置-Dorg.slf4j.simpleLogger.log.org.apache.maven.plugin.compiler.CompilerMojo=warn 抑制-Dmaven.compiler.showWarnings=false消息。参见How can I suppress javac warnings about deprecated api?。 Maven似乎没有提供在命令行上设置相关属性-Xlint的方法。您也不能直接-Xlint:-deprecated -Xlint:-unchecked设置它们,因为您不能设置单个插件属性。它必须是settings.xml