背景故事:
在eclipse中,当您使用pom文件(以及版本)打开多个项目时,如果版本与您列出的某个依赖项匹配,它将自动使用本地引用。如果它们不匹配,那么它依赖于repo中的工件。 (这很方便,因为它允许您对活动版本进行实时编辑/链接,同时修复了对不稳定项目/依赖项版本的依赖性。)
问题
在gradle中,似乎没有办法说出
我依赖这个子模块,版本X
相反,似乎你只能说
我依赖这个子模块,我不关心哪个版本,我会选择当前/活动的。
那么,常规语法是否有更好的语法:
compile project(':submodules:submodule1')
或许类似于?:
compile project(':submodules:submodule1:0.1-SNAPSHOT')
或
compile project('com.mydomain:submodule1:0.1-SNAPSHOT')
答案 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。
我不确定在同一个工作区中是否可以使用同一个项目的多个版本(如果这是你需要的)。