Gradle依赖项:使用本地jar编译还是从maven存储库编译?

Gradle依赖项:使用本地jar编译还是从maven存储库编译?,gradle,gradle-dependencies,Gradle,Gradle Dependencies,假设我有两个项目:utils项目,主项目。 当我使用maven存储库中的主项目build.gradle依赖项时,它运行良好: dependencies { compile 'my.group:utils-project:some-version' } 当我从maven下载jar并将jar文件添加到build.gradle时,由于缺少utils项目可传递的依赖项,它失败了: dependencies { compile files('/path/to/jar/file/utils

假设我有两个项目:
utils项目
主项目
。 当我使用maven存储库中的
主项目
build.gradle
依赖项时,它运行良好:

dependencies {
    compile 'my.group:utils-project:some-version'
}
当我从maven下载jar并将jar文件添加到
build.gradle
时,由于缺少
utils项目
可传递的依赖项,它失败了:

dependencies {
    compile files('/path/to/jar/file/utils-project.some-version.jar')
}

在使用本地jar编译主项目时,它有什么不同?我如何实现相同的效果?

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

当您说编译文件()时,Gradle只能访问工件。由于缺少POM,因此依赖项信息不可用,构建可能失败。相反,当声明从适当的存储库解析的依赖项时,Gradle在下载实际工件及其依赖项和可传递依赖项之前获取POM

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

  • 将所有依赖项和可传递依赖项(等等)下载到本地文件夹并相应地引用它们

    compile files('/path/to/jar/file/*.jar')
    
  • 使用

  • 创建特定库的uber/fat/shade/shadow,以便在单个
    jar
    文件中包含所有依赖项