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



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

我在gradle.properties中插入了以下内容:

userCount=100

在我的构建。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.

如果我在构建中直接定义userCount=100(或任何任意数字),则文件的编写工作正常。Gradle的障碍是为用户的#设置参数

您可以简单地使用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))
    }
  }
}

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

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

最新更新