Gradle - 使用命令行参数创建自定义任务

Gradle - create custom task with command line parameters

我正在寻找一种将参数传递给自定义 Gradle 任务的方法。 (Gradle 5.1.1)

我创建了一个任务:

public class MyTask extends DefaultTask {

private String url;

  @Optional
  public void setUrl(String url) {
    this.url = url;
  }

  @Input
  public String getUrl() {
    return url;
  }

  @TaskAction
  public void run() {
    System.out.println("URL IS " + getUrl());
 }
}

这类似于以下位置给出的示例: https://docs.gradle.org/current/userguide/custom_tasks.html#example_declaring_a_command_line_option

下一步我创建了一个插件来承载这个任务。

public class MyPlugin implements Plugin<Project>, TasksProducingPlugin {

  @Override
  public void apply(Project project) {
    MyTask myTask = project.getTasks().create("exampleTask", MyTask.class);
    myTask.setDescription("...");
    myTask.setGroup(TASK_GROUP_NAME);
    myTask.run();

  @Override
  public Collection<String> taskNames() {
    Collection<String> collection = new HashSet<>();
    collection.add("exampleTask");
    return collection;
  }
}

现在我想从命令行 运行 exampleTask 并提供 url 的值。

我试试:

gradlew exampleTask --url=http://www.google.com/ 

并得到:

Unknown command-line option '--url'.

也尝试过:

gradlew exampleTask -Purl=http://www.google.com/

并得到:

No value has been specified for property 'url'.

我做错了什么?

再看看文档。您已使用 @Optional 而不是 @Option.

注释了 setter 方法