如何获得一个库的所有依赖关系?

时间:2019-12-29 09:22:06

标签: java android maven gradle

我想在我的Android项目中使用Google Firebase消息传递库。但是我的笔记本电脑只能脱机工作,无法访问互联网。我想下载FirebsaeMessaging库及其所有依赖项,然后将这些文件作为aar library文件添加到我的项目中。首先,我想获取该库所有依赖项的列表。没有互联网怎么办?谢谢。

2 个答案:

答案 0 :(得分:0)

您可以使用我的dependency-export插件通过maven目录约定将依赖项导出到目录。然后,您可以将目录用作本地资源库以离线构建。

从Gradle 6.1版开始,依赖项缓存是可移植的,这意味着您可以将依赖项缓存从一台机器复制到另一台机器,而另一台机器应该可以脱机构建。也许这就是您想要的?

请参见this issue

答案 1 :(得分:0)

一般有两种方法:

  1. 您可以使用在线系统下载完整的依赖项,将其复制到libs文件夹中,然后创建一个项目,您依赖于该libs文件夹中的每个jar。

  2. 您创建一个基于Maven的项目,构建该项目,以便将每个依赖项都复制到本地存储库中,并将.m2(本地存储库)复制到您的脱机计算机上。如果您想要基于gradle的项目,@ lance-java已经发布了一个解决方案。

第一种方法的优点是您有一个独立的项目,不依赖互联网。一切都在您的项目中并且是明确的。您将不得不像过去那样将依赖项检入到源代码控制系统中。

如果您正在该项目的团队中工作,则第二种方法很好。依赖项的导出与项目设置本身无关。每个程序员都会发现一个“正常”的项目设置和依赖管理。

如果您猜到了,您想采用1.方法。如果是这样,我建议使用ivy下载完整的依赖树。将ivy-X.Y.Z.jar放入项目中的脚本旁边,该脚本列出了所有依赖项-一种穷人依赖项管理。

示例:

$ java -jar ivy-2.5.0.jar -dependency com.google.firebase firebase-admin 6.8.1 -retrieve "libs/[artifact](-[classifier]).[ext]"    

此命令将下载com.google.firebase:firebase-admin:6.8.1的完整依赖关系树,并将没有版本的jars存储到libs文件夹中。