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 方法
我正在寻找一种将参数传递给自定义 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
.