如何在 Maven 项目中使用 -Xlint:unchecked 进行编译?
Posted
技术标签:
【中文标题】如何在 Maven 项目中使用 -Xlint:unchecked 进行编译?【英文标题】:How to compile using -Xlint:unchecked in a Maven project? 【发布时间】:2012-09-09 01:53:08 【问题描述】:在 NetBeans 7.2 中,我无法找到如何在 Maven 项目中使用 -Xlint:unchecked 进行编译。在 Ant 项目下,您可以通过转到 Project Properties -> Compiling 来更改编译器标志,但 Maven 项目似乎没有任何此类选项。
有没有办法配置 IDE 以使用 Maven 使用此类标志进行编译?
【问题讨论】:
如果您需要传递多个参数,您可能会收到<compilerArgument>
的错误。看到这个答案替代<compilerArgs><arg></arg>...<compilerArgs>
:***.com/a/23743186/257299
【参考方案1】:
这对我有用...
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
<compilerArguments>
<endorseddirs>$endorsed.dir</endorseddirs>
</compilerArguments>
<compilerArgs>
<arg>-Xlint:unchecked</arg> <-------this right here ---->
</compilerArgs>
</configuration>
</plugin>
</plugins>
【讨论】:
【参考方案2】:我想详细说明@Nishant 的回答。 compilerArgument
标签需要进入 plugin/configuration
标签内。这是一个完整的例子:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<testSource>1.8</testSource>
<testTarget>1.8</testTarget>
<compilerArgument>-Xlint:unchecked</compilerArgument>
</configuration>
</plugin>
</plugins>
【讨论】:
提供需要进入的上下文参数是有用答案的重要组成部分。谢谢!【参考方案3】:pom 文件信息很准确。我遇到了在 Jenkins 中构建别人的 Maven 项目并且无法访问 pom 文件存储库的额外挑战。
我创建了一个预编译步骤,例如从git下载后将编译器参数插入到pom文件中
sed -i 's|/target> *$|/target>\n<compilerArgument>\n-Xlint:deprecation\n</compilerArgument>|' $WORKSPACE/pom.xml
【讨论】:
错误的解决方案。分叉项目。并向他们发送包含更改的拉取请求。【参考方案4】:我猜你可以在你的 pom.xml 中设置编译器参数。请参考这个http://maven.apache.org/plugins/maven-compiler-plugin/examples/pass-compiler-arguments.html
<compilerArgument>-Xlint:unchecked</compilerArgument>
【讨论】:
我创建了一个小测试程序,它应该生成关于使用静态方法的警告,但我似乎无法让 maven 生成任何关于它的警告。此处发布示例程序和 pom 文件的要点 -> gist.github.com/influenza/5145598 @RonDahlgren:你为什么希望这会引发警告? @haylem - 访问静态字段或方法应该会在启用的情况下生成警告。这是正在使用的 javac 的详细信息,但很常见:help.eclipse.org/juno/… 和 pic.dhe.ibm.com/infocenter/dstudio/v3r1/… @RonDahlgren:是的,这是一个常见的警告,但它不是 javac 报告的。它由 Eclipse 编译器和其他一些编译器以及许多其他代码样式检查器报告,但 javac 不会报告它。如果您愿意,您可以使用 Maven 编译器来代替。 链接页面建议以上是关于如何在 Maven 项目中使用 -Xlint:unchecked 进行编译?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用非 Maven 项目作为 Maven 模块的资源? [复制]