Gradle 依赖项 : compile using local jar vs compile from maven repository?

标签 gradle gradle-dependencies

假设我有 2 个项目:utils-project , main-project .
main-project 中使用时效果很好build.gradle来自我的 Maven 存储库的依赖项:

dependencies {
    compile 'my.group:utils-project:some-version'
}

当我从 maven 下载 jar 并将 jar 文件添加到 build.gradle由于缺少 utils-project 而失败传递依赖:
dependencies {
    compile files('/path/to/jar/file/utils-project.some-version.jar')
}

使用本地 jar 编译我的主项目时,它有何不同以及如何达到相同的效果?

最佳答案

区别在于项目对象模型 (POM),它的存在或不存在。 POM 文件 pom.xml包含特定模块的依赖项,通常与项目工件一起部署到 Maven 存储库。

当你说 compile files() , Gradle 只能访问工件。由于没有 POM,依赖信息不可用,构建可能会失败。相反,当声明从适当的存储库解析的依赖项时,Gradle 在下载实际工件及其依赖项和传递依赖项之前获取 POM。

您可以通过使用本地 jar 实现相同的效果

  • 将所有依赖项和传递依赖项(等等)下载到本地文件夹并相应地引用它们
    compile files('/path/to/jar/file/*.jar')
    
  • 使用flat directory repositories
  • 创建特定库的 uber/fat/shaded/shadow 以便它在单个 jar 中包含所有依赖项文件。
  • 关于Gradle 依赖项 : compile using local jar vs compile from maven repository?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62128628/

    相关文章:

    java - 如何以编程方式检查市场上给定 jar 的最新版本?

    java - 在 Android Studio 3.2.1 中禁用代理设置不起作用

    java - 安卓工作室 : Espresso dependencies in gradle

    Gradle "changing"依赖管理

    android - 如何从 https ://maven. google.com 检查可用的库和版本号

    android - 使用 android.tools.lint 执行 JetifyTransform 失败

    android - Gradle构建时,任务 ':app:transformClassesWithDexForDebug'执行失败

    gradle - 错误:无法在Jar中找到或加载主类

    android-studio - 如何修复Android Studio Gradle构建错误?

    java - 有没有一种标准的方法来将依赖版本声明为Gradle中的变量,然后可以在依赖 block 中引用它?