SourceSet.compiledBy实际上做了什么?

时间:2017-11-29 12:49:58

标签: gradle

当你有这样的块时:

sourceSets {
  main {
    java {
      srcDir 'spec/src'
      srcDir 'shared/src'
      srcDir 'server/src'
    }
    resources {
      srcDir 'spec/src'
      srcDir 'shared/src'
      srcDir 'server/src'
    }
    compiledBy 'wsGen'
  }
}

compiledBy完成了什么?它只是用于缓存/性能吗?它是否导致任务作为compileJava任务的一部分运行? API文档说它

  

注册一组任务,负责将此源集编译到classes目录中。路径按Task.dependsOn(java.lang.Object[])进行评估。

这很好,但是我有一个Gradle项目,当它不在wsGen列表中时,似乎正在运行dependsOn任务。 compiledBy来自哪里?

我试图解决这个问题的问题,而不是试图理解这个函数的机制。

1 个答案:

答案 0 :(得分:1)

是的,这是它的来源,但不是,这与compileJava任务没有直接关系。有效地,compiledBy选项设置builtBy的{​​{1}}选项,该选项代表源集的输出。 ConfigurableFileCollection添加的classes任务取决于JavaBasePlugin任务,compileJava任务和processResources任务,这反过来导致任务执行因为它是ConfigurableFileCollection任务的隐式传递依赖。