无法为任务获取属性未知属性

时间:2016-10-14 19:43:05

标签: gradle build.gradle

努力让Gradle生成CSV文件并尝试为我的build.gradle文件创建属性,该文件可以从命令行传入。

我已将以下内容插入gradle.properties:

userCount=100

在我的build.gradle文件中

    task writeUsersFile << {
    if (project.hasProperty('userCount')){
        args = getProperty(userCount)
    }
    outputFile.withWriter { out ->
    1.upto($userCount) {
      out.println(String.format(userNameFmt, it, testPassword))
    } 
  } 
}

当我通过命令行运行Gradle进程时,遇到以下情况:

Could not get unknown property '100' for task ':writeUsersFile' of type org.gradle.api.DefaultTask.

如果我从命令行传递参数,它会正确地将错误从默认值“100”更新为我传递的值。

还尝试过:

task writeUsersFile << {
    userCount = project.hasProperty('userCount') ? project.userCount : ''
    outputFile.withWriter { out ->
    1.upto($userCount) {
      out.println(String.format(userNameFmt, it, testPassword))
    }
  }
}

,结果是:

Could not get unknown property '$userCount' for task ':writeUsersFile' of type org.gradle.api.DefaultTask.

如果我在build.gradle中直接定义userCount=100(或任意数字),那么文件的写入工作正常,包版就是为用户设置参数。

2 个答案:

答案 0 :(得分:0)

您可以在不使用userCount的情况下简单地使用getProperty,并且仅使用双引号字符串评估符号$userCount

task writeUsersFile << {
    t_userCount = project.hasProperty('userCount') ? userCount : 0
    outputFile.withWriter { out ->
    1.upto(t_userCount) {
      out.println(String.format(userNameFmt, it, testPassword))
    }
  }
}

答案 1 :(得分:0)

以下更改解决了我遇到的问题。当我在userCount方法调用中直接使用upto()时遇到了解析问题。以下块解决了错误消息和后续解析问题:

task writeUsersFile << {
    outputFile.withWriter { out ->
    1.upto(Integer.parseInt(userCount)) {
      out.println(String.format(userNameFmt, it, testPassword))
    }
  }
}