使用 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 语法?

改用ListProperty<Integer>

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