如何在 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
。
文件依赖一般是不得已的工具,不参与冲突解决;你需要一个像 maven
或 ivy
这样的依赖库。
我的 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
。
文件依赖一般是不得已的工具,不参与冲突解决;你需要一个像 maven
或 ivy
这样的依赖库。