Gradle Incremental Tasks:将已生成的代码添加到类路径中

时间:2014-08-13 08:03:46

标签: groovy gradle

我创建了一个生成一些Java代码的自定义Gradle任务。为了优化执行,此插件使用@InputDirectory和@OutputDirectory注释,因此不必在每次构建时生成代码。

但是,我希望此任务将生成的代码添加到类路径中。

我目前正在这样做
class JaxbTask extends DefaultTask {
    @OutputDirectory
    File destdir = project.file( "${project.buildDir}/generated-sources/mygen" )
    @InputDirectory
    File schemaRoot = project.file("${project.projectDir}/src/main/resources/myschema/")

    @TaskAction
    def main() {
        ..
        project.sourceSets.main.java.srcDirs += destdir
        ..
    }

问题是当生成的代码是最新的时,不执行TaskAction并且源目录没有添加到编译路径。有没有办法确保始终执行源路径的修改?

1 个答案:

答案 0 :(得分:0)

任务永远不应该尝试配置构建模型。配置是构建脚本和插件的责任,需要在配置阶段(在任何任务运行之前)发生。