现场Bug/Maven内置多模块项目
在将spotbugs添加到我的多模块项目中时,我遇到了一个问题:现场Bug/Maven内置多模块项目,maven,findbugs,spotbugs,Maven,Findbugs,Spotbugs,在将spotbugs添加到我的多模块项目中时,我遇到了一个问题: 无法在项目%X上执行目标:无法解析项目%X的依赖关系:war:1.0.1-SNAPSHOT:在中找不到%Y.1-SNAPSHOThttps://repository.apache.org/content/repositories/snapshots/ 缓存在本地存储库中,在apache.snapshots的更新间隔结束或强制更新之前,不会重新尝试解析->[Help 1] 其中: %X-模块1取决于模块2(%Y) %Y-模块1(%X
无法在项目%X上执行目标:无法解析项目%X的依赖关系:war:1.0.1-SNAPSHOT:在中找不到%Y.1-SNAPSHOThttps://repository.apache.org/content/repositories/snapshots/ 缓存在本地存储库中,在apache.snapshots的更新间隔结束或强制更新之前,不会重新尝试解析->[Help 1]
其中:%X-模块1取决于模块2(%Y)
%Y-模块1(%X)所需的模块2(.jar库) perent pom.xml:
<artifactId>myProj</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>%X</module>
<module>%Y</module>
</modules>
...
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>4.0.4</version>
<dependencies>
<!-- overwrite dependency on spotbugs if you want to specify the version of spotbugs -->
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs</artifactId>
<version>4.1.2</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</pluginManagement>
</build>
请使用
mvn clean install
,这会将您的工件带到本地存储库。因为这使您能够:
将(您的项目/模块)用作本地其他项目中的依赖项
而不是mvn clean compile
,它只编译到“build output folder”(通常是target
;)(…对于IDE来说这可能已经足够了,但也省略了completetest
和package
阶段:o)
…这使来自spotbugs的错误消息更容易理解(这是正确的:%X:war:1.0.1-SNAPSHOT
不在存储库中(仅在上次执行安装的状态下)
更新:我知道,克服java.lang.OutOfMemoryError
的唯一机会是:
增加记忆!(,请同时注意“fork”注释。)
分析stacktrace和的当前源代码,它是:
Set valueNumbers=newhashset(vnaFrame.allSlots());
…所以没有明显的错误,但实际上只是一个巨大的哈希集(实例化/复制),增加内存是一个公平的解决方案。通过在my pom.xml旁边添加以下内容来解决问题:
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>4.0.4</version>
........
<configuration>
<effort>Max</effort>
<threshold>Low</threshold>
<failOnError>false</failOnError>
<maxHeap>1024</maxHeap>
</configuration>
........
</plugin>
com.github.spotbug
spotbugs maven插件
4.0.4
........
马克斯
低
假的
1024
........
为什么不使用clean package
而不是clean compile
?据我所知,spotbug只需要编译源代码,您也可以看到它们使用了mvn compile
。但是我尝试了mvn clean package
并得到了相同的错误错误错误消息看起来像是错误的多模块设置…请在github上提供一个示例项目…我遵循了您的建议:使用mvn clean install
并更改为Xmx1024m
。执行mvn spotbugs:spotbugs-pl:%X
:[error]执行goal com.github失败。spotbugs:spotbugs maven plugin:4.0.4:spotbugs(默认cli)在项目myProject上:执行goal com.github的默认cli。spotbugs:spotbugs maven plugin n:4.0.4:spotbugs失败:Java返回:1->[Help 1]
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:148)org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)在org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)在org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)在org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)上
还尝试在hole project上执行comandmvn spotbugs:spotbugs
时收到以下错误:[error]无法执行goal com.github.spotbugs:spotbugs maven插件:4.0.4:spotbugs(默认cli)在project myProject:Execution default cli of goal com.github.spotbugs:spotbugs maven plugi n:4.0.4:spotbugs failed:Timeout:killed the sub process->[Help 1]
这可能是由于/可配置的原因(默认值为10分钟)
[INFO]
[INFO] --- spotbugs-maven-plugin:4.0.4:spotbugs (default-cli) @ myProject ---
[INFO] Fork Value is true
[java] Exception in thread "main" edu.umd.cs.findbugs.ba.AnalysisException: Exeption was thrown during analysis
[java] at edu.umd.cs.findbugs.FindBugs2.lambda$analyzeApplication$3(FindBugs2.java:1125)
[java] at java.util.ArrayList.forEach(ArrayList.java:1257)
[java] at edu.umd.cs.findbugs.FindBugs2.analyzeApplication(FindBugs2.java:1118)
[java] at edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:309)
[java] at edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:395)
[java] at edu.umd.cs.findbugs.FindBugs2.main(FindBugs2.java:1231)
[java] Caused by: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: GC overhead limit exceeded
[java] at java.util.concurrent.FutureTask.report(FutureTask.java:122)
[java] at java.util.concurrent.FutureTask.get(FutureTask.java:192)
[java] at edu.umd.cs.findbugs.FindBugs2.lambda$analyzeApplication$3(FindBugs2.java:1120)
[java] ... 5 more
[java] Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
[java] at java.util.HashMap.resize(HashMap.java:704)
[java] at java.util.HashMap.putVal(HashMap.java:629)
[java] at java.util.HashMap.put(HashMap.java:612)
[java] at java.util.HashSet.add(HashSet.java:220)
[java] at java.util.AbstractCollection.addAll(AbstractCollection.java:344)
[java] at java.util.HashSet.<init>(HashSet.java:120)
[java] at edu.umd.cs.findbugs.ba.deref.UnconditionalValueDerefSet.cleanDerefSet(UnconditionalValueDerefSet.java:407)
[java] at edu.umd.cs.findbugs.ba.deref.UnconditionalValueDerefAnalysis.propagateDerefSetsToMergeInputValues(UnconditionalValueDerefAnalysis.java:881)
[java] at edu.umd.cs.findbugs.ba.deref.UnconditionalValueDerefAnalysis.meetInto(UnconditionalValueDerefAnalysis.java:728)
[java] at edu.umd.cs.findbugs.ba.Dataflow.execute(Dataflow.java:345)
[java] at edu.umd.cs.findbugs.classfile.engine.bcel.UnconditionalValueDerefDataflowFactory.analyze(UnconditionalValueDerefDataflowFactory.java:82)
[java] at edu.umd.cs.findbugs.classfile.engine.bcel.UnconditionalValueDerefDataflowFactory.analyze(UnconditionalValueDerefDataflowFactory.java:41)
[java] at edu.umd.cs.findbugs.classfile.impl.AnalysisCache.analyzeMethod(AnalysisCache.java:368)
[java] at edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getMethodAnalysis(AnalysisCache.java:321)
[java] at edu.umd.cs.findbugs.ba.ClassContext.getMethodAnalysis(ClassContext.java:995)
[java] at edu.umd.cs.findbugs.ba.ClassContext.getUnconditionalValueDerefDataflow(ClassContext.java:837)
[java] at edu.umd.cs.findbugs.detect.BuildUnconditionalParamDerefDatabase.analyzeMethod(BuildUnconditionalParamDerefDatabase.java:118)
[java] at edu.umd.cs.findbugs.detect.BuildUnconditionalParamDerefDatabase.considerMethod(BuildUnconditionalParamDerefDatabase.java:107)
[java] at edu.umd.cs.findbugs.detect.BuildUnconditionalParamDerefDatabase.visitClassContext(BuildUnconditionalParamDerefDatabase.java:91)
[java] at edu.umd.cs.findbugs.DetectorToDetector2Adapter.visitClass(DetectorToDetector2Adapter.java:76)
[java] at edu.umd.cs.findbugs.FindBugs2.lambda$null$1(FindBugs2.java:1108)
[java] at edu.umd.cs.findbugs.FindBugs2$$Lambda$18/1193894341.call(Unknown Source)
[java] at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[java] at edu.umd.cs.findbugs.CurrentThreadExecutorService.execute(CurrentThreadExecutorService.java:86)
[java] at java.util.concurrent.AbstractExecutorService.invokeAll(AbstractExecutorService.java:238)
[java] ... 4 more
Set<ValueNumber> valueNumbers = new HashSet<>(vnaFrame.allSlots());
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>4.0.4</version>
........
<configuration>
<effort>Max</effort>
<threshold>Low</threshold>
<failOnError>false</failOnError>
<maxHeap>1024</maxHeap>
</configuration>
........
</plugin>