【问题标题】:How to remove SuppressFBWarnings annotations from released jar-s?如何从已发布的 jar-s 中删除 SuppressFBWarnings 注释?
【发布时间】:2016-05-24 19:24:19
【问题描述】:

您可能知道,SuppressFBWarnings 注释保留在类文件中,但在运行时不需要,因此 FindBugs 不会成为您项目的运行时依赖项。不幸的是,对于将项目用作依赖项的 Gradle 用户,这些重新注释会导致编译警告如下:

warning: Cannot find annotation method 'value()' in type
'SuppressFBWarnings': class file for
edu.umd.cs.findbugs.annotations.SuppressFBWarnings not found

请注意,Maven 用户不会收到任何警告(使用默认 javac 配置)。但我当然不能忽视 Gradle 用户。

所以看来我必须以某种方式从发布版本中删除这些注释。但是我找不到任何现有的解决方案,这很奇怪。其他人如何处理这个问题?

【问题讨论】:

  • 问题:你不能在你发布的 POM 中声明对 annotations.jar 和 jsr305.jar 的依赖吗?这不会伤害任何人,并且该消息应该消失。
  • 我经常使用 Gradle,但有趣的是到目前为止还没有遇到过这个问题。可能是本地问题?
  • @Thomas 该项目是一个 0-required-dependencies 项目近 15 年了(它是 FreeMarker BTW),所以我愿意采取额外的步骤来避免这种情况。尽管也许可以选择使用“提供”范围添加这些依赖项。我确定还没有。重要的是版本升级不会破坏任何依赖项目,这些项目可能具有冲突的依赖关系等。
  • @Thomas:这是一个本地问题,显然不是。我意识到这一点是因为其他 Gradle 用户已经报告了它。后来我自己也遇到了这个问题(在一个有 0 警告策略的项目中,所以升级依赖项破坏了构建)。您是否在那些包含 SuppressFBWarnings 的 Gradle 项目中有依赖项,而项目本身不依赖于 FindBugs?
  • 好的,我了解 0-required-dependencies 标准。在这种情况下,您将不得不解决真正的问题,这就是 Gradle 产生此警告的原因(以及哪个组件)。但是,FindBugs 注释依赖通常不会导致依赖问题,因为它非常稳定,甚至不同版本的内容也基本相同(至少就SuppressFBWarnings 和其他流行的注释而言)。

标签: gradle findbugs


【解决方案1】:

使用 Gradle,您可以通过以下方式从已发布的 Jars 中消除此类警告,

compileOnly 'com.google.code.findbugs:annotations:3.0.1'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    相关资源
    最近更新 更多