【问题标题】:how to get all dependencies of a library?如何获取库的所有依赖项?
【发布时间】:2019-12-29 09:22:06
【问题描述】:

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

【问题讨论】:

  • 那么您想将库下载到您的笔记本电脑并然后离线工作吗?因为在某些时候你需要互联网连接来下载东西......
  • @JFMeier 现在我正在使用另一个系统。我想用当前系统而不是笔记本电脑下载这些文件。我想将下载的文件复制到我的笔记本电脑上!
  • 我猜你可以在有互联网的系统上构建你的项目来下载库,然后复制/粘贴到另一个系统。在 Maven 中,您可以使用 -o 在离线系统上构建。
  • @JFMeier 没有网站可以做这个吗?
  • 我猜今天大多数软件都希望你连接到互联网。

标签: java android maven gradle


【解决方案1】:

一般有两种方法:

  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 的完整依赖关系树并将没有版本的 jar 存储到 libs 文件夹中。

【讨论】:

    【解决方案2】:

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

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

    this issue

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-12
      • 2013-02-12
      相关资源
      最近更新 更多