什么是正确的maven范围的findbugs注释?

时间:2014-11-11 14:50:23

标签: maven findbugs

我想使用具有以下依赖关系的库:

<dependency>
  <groupId>com.google.code.findbugs</groupId>
  <artifactId>annotations</artifactId>
  <version>2.0.3</version>
</dependency>

我读到FindBugs用于Java代码的静态分析,所以我认为没有必要包含在应用程序中。使用<scope>provided</scope><exclusion>...</exclusion>

排除jar是否安全?

排除它的一个原因是存在针对(L)GPL许可的公司政策。

2 个答案:

答案 0 :(得分:18)

是的,您可以安全地排除此库。它仅包含在运行时不需要存在的注释。但要注意让它们可用于FindBugs分析。

请注意,您还应列出 jsr305.jar ,如下所示:

<dependency>
    <groupId>com.google.code.findbugs</groupId>
    <artifactId>annotations</artifactId>
    <version>3.0.2</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>com.google.code.findbugs</groupId>
    <artifactId>jsr305</artifactId>
    <version>3.0.2</version>
    <scope>provided</scope>
</dependency>

两个JAR都需要使这些注释有效。

检查Maven Central中的most recent findbugs version

FindBugs是在LGPL下提供的,因此贵公司不应该有任何问题。此外,您只是使用 FindBugs;你没有开发从FindBugs派生的东西。

答案 1 :(得分:2)

理论上,排除Findbugs的传递依赖应该是完全安全的(如OP的澄清评论中所定义的)。如果使用正确,只应在构建库时使用Findbugs,而不是使用它。很可能有人忘记将<scope>test</scope>添加到Findbugs依赖项中。

所以 - 继续尝试排除。运行该应用程序。您是否获得类路径错误,与库不相关的应用程序功能,或者看到日志中的消息似乎是由于没有Findbugs可用?如果答案是肯定的,我个人会重新考虑在我的应用程序中使用这个特定的库,并试图找到替代方案。

另外,祝贺前面的classpath检查!作为一般做法,每次在应用程序中包含库时都要做好自己的工作:添加库,然后检查它带来的其他传递依赖项,并在开始时进行必要的类路径清理。 。当我这样做时,我发现它使我的调试会话更短。