gradle编译依赖于需求,否则使用jar

时间:2014-05-28 16:20:14

标签: gradle dependencies multi-project

我对在多模块项目中使用gradle感兴趣,我可以重复使用这个问题Gradle nested multi-projects with project compile dependencies并说明其依赖性

 Root
  |__ P1
  |   |_ PP1
  |   |_ PP2
  |
  |__ P2
     |_PP3
     |_PP4

正如在最初的问题中,我想编译PP1 - 但我只是按需,否则我想使用最新的构建jar依赖。

dependencies {
    compile(project(":P1:PP1"))
}

理想情况下,我想要像

这样的东西
dependencies {
    compile(compileFromSourceCodeOrLoadJar(project(":P1:PP1"), 'P1:PP1'))
}

如果PP1目录中的源文件比最新构建的jar更新,它将被编译。这个想法只有在严格必要的情况下才能编译。可以从源文件的最后修改时间戳与jar文件做出决定。

为了使其更加复杂和可能有效,应根据版本控制系统输出做出决定 - 如果从时间X或修订版R开始有任何更改 - 那么结帐和编译;否则使用jar依赖。

有没有人解决过这个问题?我想这可以通过自定义gradle / groovy插件解决,但有人必须已经解决了吗?

感谢。

1 个答案:

答案 0 :(得分:1)

Gradle计划支持分布式构建缓存,但目前尚不可用。在不触及Gradle代码库的情况下实现这一点可能很困难(我不知道任何这样的努力)。常规的Maven / Ivy仓库可能不是保持缓存构建结果的最佳位置。