Gradle SourceSet.compiledBy实际上做什么?
当你有这样一个区块:Gradle SourceSet.compiledBy实际上做什么?,gradle,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' }
sourceSets {
main {
java {
srcDir 'spec/src'
srcDir 'shared/src'
srcDir 'server/src'
}
resources {
srcDir 'spec/src'
srcDir 'shared/src'
srcDir 'server/src'
}
compiledBy 'wsGen'
}
}
由编译的实现了什么?它只是为了缓存/性能吗?它是否导致任务作为compileJava
任务的一部分运行?API文档说它
注册一组任务,这些任务负责将此源代码集编译到classes目录中。路径按照Task.dependsOn(java.lang.Object[])
进行评估
这很好,但是我有一个Gradle项目,它似乎正在运行wsGen
任务,而它不在dependsOn
列表中。是由
从哪里编译的
与其说我想解决这个问题,不如说我只是想理解这个函数的机制。是的,这就是它的来源,但不是,这与compileJava
任务没有直接关系。实际上,compiledBy
选项设置表示源集输出的ConfigurableFileCollection
的buildby
选项。JavaBasePlugin
添加的classes
任务取决于compileJava
任务、processResources
任务和所述的ConfigurableFileCollection
任务,这反过来会导致执行任务,因为它是类
任务的隐式传递依赖项。好的。因此,为了确保我理解:compiledBy
是一个通用配置项,它可能会影响由其他插件(如Java插件)生成的任务层次结构,导致指定的compiledBy
任务作为compileJava
的间接依赖项运行?不,正如我已经说过的,它与compileJava
任务没有任何关联。在Gradle中,您可以告诉ConfigurableFileCollections
(顾名思义是一个文件集合)哪些Gradle任务创建了构成文件集合内容的文件。如果文件集合在某个地方使用,则需要运行以创建包含的文件的任务将自动执行。classes
任务取决于源集的输出文件集合,因此,如果执行classes
任务,则会执行该任务。