当我在脚本中执行此操作时

artifacts = ['abc123-com', 'abc123-ejb', 'abc123-spec', 'abc123-war', 'abc123-war2']

task clone_workspace() << {
    for (item in artifacts) {
        println item
    }
}

我得到
> Cannot set the value of read-only property 'artifacts' on root project 'abc123'.

我尝试使用project.artifacts进行范围界定,并使用project.ext.artifacts进行范围界定。

我在这里做错了什么?

最佳答案

以下极简的Gradle文件说明project已经具有artifacts的属性(已记录的here):

println "TRACER : " + project.artifacts.class

输出:
bash$ gradle
TRACER : class org.gradle.api.internal.artifacts.dsl.DefaultArtifactHandler_Decorated

相比之下,此版本的原版则更快乐:
def myArtifacts = ['abc123-com', 'abc123-ejb', 'abc123-spec', 'abc123-war', 'abc123-war2']

task clone_workspace() << {
    for (item in myArtifacts) {
        println item
    }
}

08-05 08:05