【问题标题】:How do I use only file based dependencies in gradle instead of specifying groupId:artifactId:versionId如何在 gradle 中仅使用基于文件的依赖项而不是指定 groupId:artifactId:versionId
【发布时间】:2015-09-16 09:34:57
【问题描述】:

我的 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')

【问题讨论】:

  • 为什么你的项目中有两次引用A*.jar?一次是文件依赖,一次是maven依赖?
  • 对于 A 它是 maven 依赖,但对于 A* 它是文件依赖。最终,我只想要文件依赖。
  • 那你为什么不直接删除maven依赖呢?
  • 我已将其删除。该查询是关于获取 B* 而不是由 A* 拉入的 B。
  • 文件依赖不能有传递依赖。所以这个:compile file('libs/A*.jar') 不能拉取任何 maven 依赖。

标签: gradle jar jarjar


【解决方案1】:

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

这样工作:

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

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

【讨论】:

    【解决方案2】:

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

    文件依赖通常是不得已而为之的工具,它们不参与冲突解决;为此,您需要像 mavenivy 这样的依赖库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-09-28
      • 2013-09-02
      • 1970-01-01
      • 2016-01-30
      • 2021-03-27
      • 2023-03-07
      • 1970-01-01
      相关资源
      最近更新 更多