使用 int[] 输入创作 Gradle 任务 属性
Authoring Gradle task with int[] input property
我正在编写一个 Gradle 任务,该任务需要处理整数数组(为每个值分派一个作业)。
我不明白如何正确使用 Property<T>
来接受 Groovy 数组语法。
以下无效
里面Task.java
/**
* Element IDs to download
*/
@Input
protected abstract Property<Integer[]> getTaxonomyElementIds();
里面build.gradle
taxonomyElementIds = [200, 201, 202, 203, 204, 205, 206, 207, 208]
错误
Cannot set the value of task ':downloadMasterDb' property 'taxonomyElementIds' of type [Ljava.lang.Integer; using an instance of type java.util.ArrayList.
以下解决方法有效,但我更喜欢更简洁的 Groovy 语法
taxonomyElementIds = [200, 201, 202, 203, 204, 205, 206, 207, 208].toArray(Integer[]::new)
我也尝试将 属性 的类型更改为 List<Integer>
(这基本上不会更改我的任务代码)但不起作用。
如何更改 属性 以接受 Groovy array/list 语法?
plugins {
id("java")
}
repositories {
mavenCentral()
}
abstract class MyTask extends DefaultTask {
@Input
protected abstract ListProperty<Integer> getTaxonomyElementIds();
@TaskAction
void generate() {
taxonomyElementIds.get().each {
println it
}
}
}
tasks.register("myTask", MyTask) {
taxonomyElementIds = [200, 201, 202, 203, 204, 205, 206, 207, 208]
}
上面的输出:
> Task :myTask
200
201
202
203
204
205
206
207
208
我正在编写一个 Gradle 任务,该任务需要处理整数数组(为每个值分派一个作业)。
我不明白如何正确使用 Property<T>
来接受 Groovy 数组语法。
以下无效
里面Task.java
/**
* Element IDs to download
*/
@Input
protected abstract Property<Integer[]> getTaxonomyElementIds();
里面build.gradle
taxonomyElementIds = [200, 201, 202, 203, 204, 205, 206, 207, 208]
错误
Cannot set the value of task ':downloadMasterDb' property 'taxonomyElementIds' of type [Ljava.lang.Integer; using an instance of type java.util.ArrayList.
以下解决方法有效,但我更喜欢更简洁的 Groovy 语法
taxonomyElementIds = [200, 201, 202, 203, 204, 205, 206, 207, 208].toArray(Integer[]::new)
我也尝试将 属性 的类型更改为 List<Integer>
(这基本上不会更改我的任务代码)但不起作用。
如何更改 属性 以接受 Groovy array/list 语法?
plugins {
id("java")
}
repositories {
mavenCentral()
}
abstract class MyTask extends DefaultTask {
@Input
protected abstract ListProperty<Integer> getTaxonomyElementIds();
@TaskAction
void generate() {
taxonomyElementIds.get().each {
println it
}
}
}
tasks.register("myTask", MyTask) {
taxonomyElementIds = [200, 201, 202, 203, 204, 205, 206, 207, 208]
}
上面的输出:
> Task :myTask
200
201
202
203
204
205
206
207
208