如何在Gradle中用分类器(平台版本)排除依赖?

jre*_*not 10 dependency-management gradle maven

在我的项目中,我依赖于'org.nd4j:nd4j-native-platform:0.6.0',它带来了传递依赖:

  • Gradle:org.nd4j:nd4j-native:linux-ppc64le:0.6.0
  • Gradle:org.nd4j:nd4j-native:macosx-x86_64:0.6.0
  • Gradle:org.nd4j:nd4j-native:windows-x86_64:0.6.0
  • Gradle:org.nd4j:nd4j-native:linux-x86_64:0.6.0

我想排除nd4j-native:linux-ppc64le和nd4j-native:macosx-x86_64,因为我的应用程序不支持这些平台.我在Gradle文件中写道:

configurations {
    all.collect { configuration ->
        configuration.exclude(group: 'org.nd4j', module: 'nd4j-native', classifier: 'linux-ppc64le')
    }
}
Run Code Online (Sandbox Code Playgroud)

格拉德说:

错误:(44,0)无法为org.gradle.api.internal.artifacts.DefaultExcludeRule类型的对象设置未知属性"classifier".

似乎gradle不支持分类器的排除.

如何排除这种传递依赖?

更新:Gradle允许我们排除依赖关系,但是如果我们有多个依赖关系具有相同的id和group但不同的分类器呢?

Sta*_*lav 2

如何排除这种传递依赖?

我认为,唯一的方法是按模块或组排除所有传递依赖项,并手动提供对应用程序支持的平台的库的依赖项。因为依赖声明中支持分类器。

当您有多个具有相同模块和组但具有不同分类器的依赖项时,您可以以同样的方式处理这种情况。只需使用其分类器属性手动添加此类依赖项即可。