【问题标题】:update gradle from 4.4 to 5.4 make joda-time dependancy issue将 gradle 从 4.4 更新到 5.4 导致 joda-time 依赖问题
【发布时间】:2020-03-24 20:46:07
【问题描述】:

您好,我已将一个项目从 4.4 迁移到 gradle 版本 5.4。此后gradlew build 返回错误如下。

....ConvTable.java:6: error: package org.joda.time does not exist import org.joda.time.DateTime;

...ConvetService.java:5: error: package org.joda.time does not exist import org.joda.time.DateTime;

...ConvetService.java:34: error: cannot find symbol ConvTableP getLastCononTableDate(String fromCurrency, String toCurrency, DateTime dateTimeZone) throws IOException;

symbol: class DateTime location: interface ConvetService Note: Some input files use or override a deprecated API. Note: Recompile with -Xlint:deprecation for details

* What went wrong: Execution failed for task ':cur-api:compileJava'

gradle 文件如下所示。它是更大的一个子项目

apply plugin: "j-library" 
apply plugin: "m-publish" 

group = "com.t.cur" 

sourceCompatibility = JavaVersion.VERSION_1_7 
targetCompatibility = JavaVersion.VERSION_1_7 

publishing { publications { mavenJava(MavenPublication) { } } 

repositories { 
  maven { url "${mv_repo_url}" } } 
} 

dependencies { 
  implementation "com.t.com:x-core:1.0.0" 
  implementation "commons-lang:commons-lang:2.6" 
}

【问题讨论】:

  • 一些上下文会有所帮助。你的 build.gradle 文件是什么样的?
  • @BjørnVester 用更多 gradle 文件内容更新了问题。 x-core 使用这个 joda-time 库

标签: gradle compiler-errors dependencies jodatime


【解决方案1】:

我的猜测是,作为升级的一部分,您将 compile 配置更改为 implementation。与新配置的区别之一是依赖项不会作为编译类路径的一部分暴露给消费项目。这个想法是您放入 implementation 的依赖项是特定于实现的,不应“泄漏”到使用项目中。当使用增量编译时,这会加快构建速度,因为仅当公共 API 发生更改而不是内部实现时,才会重新编译依赖类。还有一个案例可以在项目之间提供更松散的耦合,尽管这有点主观。 implementation 依赖项仍将是 runtimeClasspath 配置的一部分并在其中解决。

所以(假设这是原因的根本问题),依赖 x-core 用于提供 Joda 作为编译的传递依赖。但现在已经不是这样了。

有两种方法可以修复它。如果您使用 Joda 作为 x-core 的公共 API 的一部分,则需要使用 api 配置而不是 implementation 来声明它(如果您还没有,请使用 java-library 插件)。这将使 Joda 成为依赖项目的编译类路径的一部分。

另一方面,如果这个子项目恰好也使用了 Joda,但与 x-core 完全无关,你也应该在此处将其声明为依赖项(implementation 或 @987654333 @ 使用与之前相同的规则)。

【讨论】:

  • 感谢 Bjørn Vester,您猜到了到底发生了什么。我会按照您的建议尝试解决问题。
猜你喜欢
  • 2017-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-27
  • 2014-09-17
  • 2020-03-20
  • 1970-01-01
  • 2022-01-05
相关资源
最近更新 更多