android - 能够根据版本动态解析模块依赖关系

标签 android gradle android-gradle-plugin

背景故事:

在 Eclipse 中,当您使用 pom 文件(以及版本)打开多个项目时,如果版本与您列出的依赖项之一匹配,它将自动使用本地引用。如果它们不匹配,则它依赖于 repo 中的 Artifact 。 (这很方便,因为它允许您在 Activity 版本上进行实时编辑/链接,同时固定对不稳定项目/依赖版本的依赖)。



问题

gradle里好像没有办法说

I depend on this sub-module, version X

相反,你似乎只能说

I depend on this sub-module, I don't care which version, I'll take the current/active one.


那么,有没有比常规语法更好的语法:

compile project(':submodules:submodule1')

也许是这样的?

compile project(':submodules:submodule1:0.1-SNAPSHOT')

compile project('com.mydomain:submodule1:0.1-SNAPSHOT')

最佳答案

如果您需要依赖特定版本,您可能不想使用项目引用。项目引用基本上说明了您在问题中提到的内容。更确切地说,它不是“我不在乎哪个版本”,而是类似于“我依赖于这个子项目——在它刚刚的版本/状态下”。这就是项目引用的用途 - 声明对另一个项目的依赖,而不是特定的 JAR/版本。

如果需要依赖某个特定的版本,应该在没有项目依赖的情况下声明它,例如:

compile('com.mygroupid:submodule1:0.1-SNAPSHOT')

这是

的简化版
compile(group:'com.mygroupid', name:'submodule1', version:'0.1-SNAPSHOT')

默认情况下,这将使用存储库中的 Artifact 。但是有一个解决方案可以让您更接近您想要的。 eclipse-integration-gradle插件可以检测此类依赖项,并将它们替换 为 Eclipse 的项目依赖项。该选项称为“将 Jars 重新映射到 Gradle 项目”。

因此,如果您的 Eclipse 工作区中有一个目标项目,其名称对应于目标模块,则将使用此类 Eclipse 项目而不是 repo JAR。

我不确定在同一工作区中同一项目的多个版本是否可行(如果这是您需要的)。

关于android - 能够根据版本动态解析模块依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30949275/

相关文章:

android - Gradle Android库无法找到主项目的资源

kotlin - 添加koin测试依赖的Gradle问题

java - 依赖于 bootRun 的 Gradle 任务

java - Gradle 不会将 jar 文件中的 .java 编译为 .class

android - 具有相同 Intent 服务的并行下载

android - 蓝牙丢包怎么恢复??安卓

Android Studio 3.0迁移AAPT2报错

maven - Gradle 告诉我 ' Must specify a repository for deployment'

android - 以编程方式打开屏幕

android - 如何在 Android 中禁用 RecyclerView 项目?