背景故事:
在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.
我不确定在同一工作区中是否可以使用同一项目的多个版本(如果这是您需要的).