现场Bug/Maven内置多模块项目

现场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

在将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)所需的模块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来说这可能已经足够了,但也省略了complete
test
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上执行comand
mvn 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>