在 Maven 中使用 FindSecBugs 会抛出 java.lang.OutOfMemoryError
Posted
技术标签:
【中文标题】在 Maven 中使用 FindSecBugs 会抛出 java.lang.OutOfMemoryError【英文标题】:Using FindSecBugs in Maven throws java.lang.OutOfMemoryError 【发布时间】:2019-12-31 12:09:23 【问题描述】:我是 Maven 新手。我正在使用 Mac OSX。我尝试使用 maven 构建项目并且它发生得很好。然后我使用 mvn spotbugs:spotbugs 来使用 spotbugs 插件!花了一段时间并在线程“main”中抛出异常
java.lang.OutOfMemoryError: Java 堆空间。
我尝试的项目是 330 MB,非常大,我暂时无能为力。我在网上尝试了很多解决方案:
1.export MAVEN_OPTS="-Xmx2048m"
(我试过增加到12000m还是不行)
2.使用了这个插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<fork>true</fork>
<meminitial>1024m</meminitial>
<maxmem>8096m</maxmem>
</configuration>
</plugin>
还是没用。
谁能指导我完成它?我正在使用 maven spotbugs 版本 3.1.12。
使用 java 11,Maven 3
【问题讨论】:
【参考方案1】:SpotBugs Maven 插件在其常见问题解答中包含“How do I avoid OutOfMemory errors?”,我假设您已经看过(因为您尝试了MAVEN_OPTS="-Xmx2048m"
)
但还有一件事
您还可以使用 fork 选项,该选项将用于新的 JVM。然后使用 maxHeap 选项来控制堆大小。
查看docs 是3.1.12.3-SNAPSHOT
中的接缝,fork
选项默认为true
。如果3.1.12
(或您使用的任何确切版本)是这种情况,并且如果我正确阅读了文档,那么您必须配置maxHeap
其中defaults to 512。
【讨论】:
【参考方案2】:如上所述,尝试调整 maxHeap 值。
接下来是一个sn-p的maven配置。这就是我配置 spotbugs 以避免内存不足错误的方式。
<reporting>
<plugins>
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>$spotbugs-maven-plugin.version</version>
<configuration>
<effort>Max</effort>
<threshold>Low</threshold>
<maxHeap>2048</maxHeap>
</configuration>
</plugin>
</plugins>
</reporting>
【讨论】:
以上是关于在 Maven 中使用 FindSecBugs 会抛出 java.lang.OutOfMemoryError的主要内容,如果未能解决你的问题,请参考以下文章