【发布时间】:2014-02-09 22:21:26
【问题描述】:
假设以下项目。主项目是一个多项目,但是较大项目的每个部分都可以单独开发或混合开发:
/master/build.gradle
/m1/build.gradle
/m2/build.gradle
/m3/build.gradle
假设m3 使用m2 和m2 使用m1 (m1 <- m2 <- m3 )
m2 的存在是可选的,具有以下布局的多项目也是合理的
/master/build.gradle
/m1/build.gradle
/m3/build.gradle
但在这种情况下,m2 将从工件存储库中提取,这很好......但是 m1 是 m2 的传递依赖,这很好,但是我如何告诉 gradle 使用本地m1 的版本而不是烘焙的工件?
我坚持这一点,我有权覆盖这些东西的每个地方 gradle 都给了我“只是”ModuleVersionSelector 级别的访问权限,我如何根据下载的工件传递依赖项添加DefaultProjectDependency?
如果我可以访问存档工件的完整依赖关系图,并放入一些覆盖/排除项,我可能会有替代方案。
编辑:
我想到的最好的方法是使用 resolutionStrategy 过滤器,我通过进一步开发“elastic-deps”项目创建了一个示例
【问题讨论】:
标签: dependencies gradle multi-project build-system transitive-dependency