能够根据版本

时间:2015-06-20 01:04:08

标签: android gradle android-gradle

背景故事:

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

问题

在gradle中,似乎没有办法说出

  

我依赖这个子模块,版本X

相反,似乎你只能说

  

我依赖这个子模块,我不关心哪个版本,我会选择当前/活动的。

那么,常规语法是否有更好的语法:

compile project(':submodules:submodule1')

或许类似于?:

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

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

1 个答案:

答案 0 :(得分:2)

如果您需要依赖特定版本,也许您不想使用项目引用。项目参考基本上说明了你在问题中提到的内容。更确切地说,它不是“我不关心哪个版本”,而是“我依赖于这个子项目 - 在版本/状态中它就是现在”。这是项目引用的用途 - 声明依赖于另一个项目,而不是特定的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。

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