14

如何将属性传递给 gradle 自定义任务?在 ant 中会是这样的:

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
    }

}

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

4

2 回答 2

14

我找到了解决方案:

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"
}
于 2013-06-05T08:39:08.910 回答
7

您可以使用-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 -Pname="My name" -Pversion="1.2.3"

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

于 2016-01-06T14:39:47.157 回答