См. ExecSpec : когда вы пишете commandLine("ln", "-s", configFile)
, вы фактически вызываете свойство commandLine
setter ; если вы заключите этот вызов в цикл forEach
, будет использовано только последнее значение (это то, что вы заметили). Фактически у задачи Exec
может быть только один commandLine
.
В вашем случае вы можете заключить вызов project.exec( {...})
в блок forEach
, чтобы инициировать один вызов exec
для каждого файла конфигурации.
Что-то подобное должно работать (код не протестирован, возможно, вам придется немного адаптироваться):
@TaskAction
fun create() {
var configFilesPath = Paths.get(System.getProperty("user.dir"), "../../../", "myconfig/");
// Iterate over all files in myconfig/
Files.list(configFilesPath).forEach{
val configFile = configFilesPath.toString() + "/" + it.fileName
project.exec({
workingDir(project.projectDir)
commandLine("ln", "-s", configFile)
})
}
}
Примечание Вы также должны сконфигурировать свою задачу в блоке doLast { }
.