【问题标题】:Gradle vs Maven. Behavior with java Deprecated API usageGradle 与 Maven。 java 的行为 不推荐使用的 API 用法
【发布时间】:2017-12-22 20:34:02
【问题描述】:

我有一个使用 Maven 作为构建工具的大项目。它执行install 操作约 30 分钟。我决定改用 Gradle,因为它被认为是更快的构建工具。但我在compileJava 任务中遇到了一个问题,看起来像下一个:

[ERROR] [system.err] Note: /home/user/IdeaProjects/SomeClass.java uses or overrides a deprecated API.

出现此类错误后,Gradle 停止构建过程,但 Maven 成功完成了install 操作。

那么,我的问题是有没有办法摆脱这种 Gradle 行为?

【问题讨论】:

  • 将您的调用替换为已弃用的方法。不推荐使用它们的原因是:您不应该使用它们。
  • @VGR,我有一百万串代码。不幸的是,这是一个大问题。
  • 编译器可以准确显示出问题所在的行。
  • @VGR,我明白这一点,但我可能要花 3 年时间才能解决所有问题。
  • This answer 是如何禁用 android 应用程序的弃用检查。它也可能对您有用。

标签: java maven gradle


【解决方案1】:

默认情况下,Java 编译器不会将弃用警告视为编译错误。 Gradle 中的 Java 插件遵循相同的默认设置,因此您必须对其进行配置。简而言之,在您的构建中,javac 被赋予了选项-Werror

它可能看起来像:

compileJava {
  options.compilerArgs += ['-Werror']
}

如果您不希望构建因编译器警告而失败,则需要从您的配置中删除此选项。

【讨论】:

  • 我得到下一个error: warning found and -Werror specified
  • 我编辑了我的答案,明确表示您必须找到该选项的传递位置并导致构建失败
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多