背景故事:
在 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/