我创建了一个图书馆' LibA'它依赖于许多第三方库,如RecyclerView,EventBus等。当我试图将它作为aar包含在另一个项目中时,Library被成功包含在内,但是依赖性并没有出现。
Q1 如何在LibA中包含依赖项,以便当其他项目包含此库时,它不应该担心我的库的内部依赖性。
Q2 gradle如何管理库的依赖关系,是一次性下载所有依赖项,还是先检查主项目中已有的依赖项?
Q3 当某人包含来自jcenter的库时,是否会带来所有依赖项?
任何帮助都将非常感谢。 :)
答案 0 :(得分:9)
aar 文件不包含嵌套(或transitive)依赖项,并且没有pom文件描述库使用的依赖项。
这意味着,如果您使用flatDir
repo导入aar文件,则还必须在项目中指定依赖项。
Q1如何在LibA中包含依赖项,以便当其他项目包含此库时,它不应该担心我的库的内部依赖性。
您应该使用 maven存储库(您必须在私人或公共maven仓库中发布库),您将不会遇到同样的问题。
在这种情况下,gradle使用pom文件下载依赖项,该文件将包含依赖项列表。
Q2 Gradle如何管理库的依赖关系,它是一次性下载所有依赖项,还是首先检查主项目中已有的?
Gradle为您处理依赖项。它没有两次或更多次添加相同的依赖。
Q3当某人包含来自jcenter的库时,是否会带来所有依赖关系?
如前所述,在这种情况下,依赖项有一个pom文件,它描述了所有嵌套的依赖项。 Gradle自动下载。
答案 1 :(得分:0)
Q1 如何在LibA中包含依赖,以便其他项目包含此库时,不必担心我的库的内部依赖。
你应该使用一些依赖管理器。例如 Maven Central,它具有 .pom
文件,该文件定义了应该使用的所有附加依赖项
Q2 gradle 如何管理库的依赖,是一次性下载所有依赖,还是先检查主项目中已经存在的依赖?
gradle
下载所有必需的依赖项。它为依赖关系创建一个图表,尝试解决冲突并下载它们
Q3 当有人包含来自 jcenter 的库时,是否会带来所有依赖项?
如果在 pom 文件中没有定义额外的依赖项,它们将不会被下载,只会下载库