考虑以下多项目gradle构建,其中ProjectA依赖于ProjectB,而ProjectB依赖于ProjectC。依赖关系以compile project(':ProjectX')
形式指定。这需要检查每个项目,以便构建ProjectA。
我想使用诸如Sonatype Nexus之类的工件仓库,以使开发人员的构建更简单,这样如果他们只在ProjectA上工作,那么他们就不需要检查从属项目,并且可以检索它们来自Nexus。同样,如果您正在处理依赖项目并且它们在本地检出,我希望它们可以构建而不是从Nexus中检索。
总之,依赖解析策略是:如果项目依赖并签出,则在本地构建,否则从Nexus检索
如何在gradle中实现这一目标?
答案 0 :(得分:0)
我通过将依赖关系定义从compile project(':ProjectX')
翻转到compile "my-group:ProjectX:version"
来实现此功能,并使用以下依赖项替换解析策略:
configurations.all {
resolutionStrategy.dependencySubstitution.all { DependencySubstitution dependency ->
if (dependency.requested instanceof ModuleComponentSelector && dependency.requested.group == "my-group") {
def proj = "${dependency.requested.module}"
if (new File(rootDir, '../' + proj).exists()) {
dependency.useTarget findProject(":${proj}")
}
}
}
}