2

我正在使用 gradle,尽管我一直在exclude成功地使用它来删除我不想要的传递依赖项,但我似乎无法解决以下问题。

假设我有以下依赖项:

org.library:useful:2.0.0
+--org.library:logging:1.5
+--org.another-library:tools:1.9
   +--org.library:logging:1.4

如您所见,我在日志记录 1.5 和日志记录 1.4 之间存在版本冲突。在我的配置中,我知道我可以使用 exclude 执行以下操作:

config('org.library:useful:2.0.0') {
   exclude(group: 'org.library', module: 'logging')
}

但是我怎么说“exclude logging 1.4"这不是来自我所依赖的任何东西(在这个例子中它来自org.another-library:tools:1.9)?

4

1 回答 1

1

处理您可能存在依赖冲突并且您希望始终将其解决为某个版本这一事实的一种方法是使用强制解决策略:

configurations.all {
  resolutionStrategy {
    force 'org.library:logging:1.5'
  }
}

另外,请注意,在您的示例中,无论如何都会排除 1.4,因为如果存在版本冲突,Gradle 默认会选择最高版本。

于 2013-10-24T12:30:08.267 回答