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



假设我有 2 个项目:utils-projectmain-project。 当我从我的 maven 存储库中使用main-projectbuild.gradle依赖项时,它工作正常:

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。

您可以通过以下方式使用本地罐子达到相同的效果

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

    compile files('/path/to/jar/file/*.jar')
    
  • 使用平面目录存储库

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

相关内容

  • 没有找到相关文章

最新更新