将属性传递给自定义gradle任务

时间:2013-06-05 08:06:39

标签: groovy gradle

如何将属性传递给gradle自定义任务?在蚂蚁它看起来像这样:

public class MyCustomTask extends Task {

    private String name;
    private String version;

    @Override
    public void execute() throws BuildException {
        // do the job
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setVersion(String version) {
        this.version = version;
    }

}

如何在gradle中完成?

class MyCustomTask extends DefaultTask {

    private String name
    private String version

    @TaskAction
    def build() {
        // do the job
    }

}

需要属性名称和版本,用户需要将它们传递给任务。

2 个答案:

答案 0 :(得分:12)

我找到了解决方案:

class MyCustomTask extends DefaultTask {

    @Input
    String name
    @Input
    String version

    @TaskAction
    def build() {
        // do the job
        println name
        println version
    }

}

使用示例:

task exampleTask(type: MyCustomTask) {
    name = "MyName"
    version = "1.0"
}

答案 1 :(得分:4)

您可以使用-P选项传递命令行参数。

例如:

public class MyCustomTask extends DefaultTask {

    String name;
    String version;

    @TaskAction
    public void execute() throws BuildException {
        // do the job
    }
}

Gradle任务

 task exampleTask(type: MyCustomTask) {
    name = project.property("name")
    version = project.property("version")
} 

Gradle命令

gradle -Pname="My name" -Pversion="1.2.3"

检查https://docs.gradle.org/current/userguide/gradle_command_line.html以获取Gradle的所有命令行选项。