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

背景故事:

eclipse中,当您使用pom文件(以及版本)打开多个项目时,如果版本与您列出的某个依赖项匹配,它将自动使用本地引用.如果它们不匹配,那么它依赖于repo中的工件. (这很方便,因为它允许您对活动版本进行实时编辑/链接,同时修复了对不稳定项目/依赖项版本的依赖性).

在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')

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

因此,如果Eclipse工作空间中的目标项目的名称与目标模块对应,则将使用此类Eclipse项目而不是repo JAR.

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

点赞