如何在 gradle 中仅使用基于文件的依赖项而不是指定 groupId:artifactId:versionId

How do I use only file based dependencies in gradle instead of specifying groupId:artifactId:versionId

我的 gradle 文件中有以下条目

dependencies {
    compile 'org.A:A:1.0'
}

下载 'org.B:B:1.0' 因为这是它的依赖项。(gradle 中未明确提及)

我想在我的项目中使用的是A*和B*,它们分别是A和B的影子(改变了命名空间)。

现在,我已将 A* 的依赖项指定为

dependencies{
    compile file('libs/A*.jar')
}

但是,这个还是会下载'org.B:B:1.0'

如何连接 gradle 以使用 file('libs/B*.jar')?

想到的第一个解决方案是排除compile 'org.A:A:1.0'

的传递依赖

这是这样工作的:

dependencies {
    compile('org.A:A:1.0') {
        exclude 'org.B:B:1.0'
    }
}

查看 Gradle User Guide 了解有关该主题的更多详细信息。

如评论中所述,文件依赖项不能具有传递依赖项。所以 A*.jar 要么以某种方式将 B.jar 的内容卷入其中,要么你在其他地方的构建路径上有 B.jar

文件依赖一般是不得已的工具,不参与冲突解决;你需要一个像 mavenivy 这样的依赖库。