我正在尝试使用gradle版本4.8+的Java Serenity-BDD项目,但是该应用程序未提取-Denvironment和-Dservicebranches的CLI参数。我在local.properties文件中将这些属性作为空白值使用,并且在我的应用运行时未分配这些属性。
- ./ gradlew --build-cache build -Dwebdriver.remote.url = $ {SELENIUM_REMOTE_URL} -Denvironment = $ {ENVIRONMENT} -Dservicebranches = $ {SERVICE_BRANCHES} -Dtags = $ {TAGS}
我有一个local.properties文件,其属性已成功依赖项注入到项目中(通过Serenity-Spring)。我希望这些CLI参数将覆盖这些值:
servicebranches=
environment=local
但是现在,CLI参数中指定的任何内容都不会传递到项目中。通过DI或通过在build.gradle中显式获取环境变量(我尝试过的方法都没有用)。
以下是我在build.gradle中尝试过的一些事情:
//task integrationTests() {
// doFirst
// {
// def environment = System.getProperty('environment')
// def servicebranches = System.getProperty('servicebranches')
// }
// tasks.build.execute()
//}
//integrationTests.dependsOn(build)
//build.doFirst{
// systemProperties System.properties
// def environment = System.properties['environment']
// environment = environment //This actually flags with 'Silly assignment'
//}
build.doFirst{
def environment = System.getProperty('environment')
def servicebranches = System.getProperty('servicebranches')
}
最新的程序似乎仍然缺少一个步骤,因为该程序仍在运行,但args仍未通过。我什至尝试了-Denvironment = potato,并且没有出现错误,因为我没有名为该属性或属性的文件。
我也尝试过使用-P标记而不是-D标记,但这似乎也不起作用。
我要做的就是在使用Serenity附带的已创建“ build”任务之前,使用build.gradle来使用System.getProperty('environment')和System.getProperty('servicebranches')。我该怎么做?我是否在使用这些getProperties的情况下构建了一个全新的任务,然后调用了构建任务?我必须在local.properties文件中指定这些相同的命名变量的分配吗?
答案 0 :(得分:1)
-D用于Gradle中的系统属性。改用-P(https://docs.gradle.org/current/userguide/build_environment.html#sec:project_properties)
答案 1 :(得分:0)
我知道这是一个非常老的问题,但这是我为解决问题而做的事情,我从这里得到了这个主意:https://github.com/serenity-bdd/serenity-documentation/pull/120/files
Serenity并未将环境从gradle中拉出来以使用EnvironmentSpecificProperties,当我删除默认环境时,它一直说“环境'null的未定义属性”。我必须将其添加到我的Gradle文件中:
test {
systemProperty 'environment', System.properties['environment']
}