Gradle:以编程方式设置参数的自定义任务

时间:2016-12-22 12:37:43

标签: gradle build.gradle

我有以下场景我希望禁用 JOOQ架构生成,除非明确要求:

gradle.taskGraph.beforeTask {
    task ->
        if (!rootProject.hasProperty("generate") && task.name.equals("generateSampleJooqSchemaSource")) {
            task.enabled = false
        }
}

现在我可以在传递"生成"时始终手动生成模式。作为参数如下:

$ gradle build -Pgenerate

而正常

$ gradle build 

重新生成我的所有架构类。

但是,我不太喜欢这种方法。您必须记住参数名称,并在-P前面添加一个看起来不干净的参数名称。

我希望能够按如下方式制作自定义任务:

task generate {
    tasks[build].executeWithParameter("generate")
}

这样它也会显示为一项实际任务。

我该如何做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以创建dependsOn构建任务并从中禁用jooq任务的任务。这需要在jooq任务声明之后放置任务声明。

task generate (dependsOn: build) {
    tasks['generateSampleJooqSchemaSource'].enabled = false
}

从任务

设置项目属性
task generate (dependsOn: build) {
    project.ext.generate = "true"
}