Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 试图从Gradle测试任务访问另一个闭包的属性_Google App Engine_Groovy_Gradle - Fatal编程技术网

Google app engine 试图从Gradle测试任务访问另一个闭包的属性

Google app engine 试图从Gradle测试任务访问另一个闭包的属性,google-app-engine,groovy,gradle,Google App Engine,Groovy,Gradle,首先,如果您感兴趣,我真正的目标是通知我的功能测试,Gradle将使用哪个端口启动我的开发服务器。最简单的方法似乎是设置系统属性。下面是我想做的: appengine { httpPort = 8081 ... } test { systemProperty "httpPort", appengine.httpPort } 我对Gradle还是个新手,可能只是不太了解Groovy的作用域规则,但应该可以做类似的事情,对吧?我见过使用全局def来做这类事情,但对于这种特殊情况,似乎

首先,如果您感兴趣,我真正的目标是通知我的功能测试,Gradle将使用哪个端口启动我的开发服务器。最简单的方法似乎是设置系统属性。下面是我想做的:

appengine {
  httpPort = 8081
  ...
}

test {
  systemProperty "httpPort", appengine.httpPort
}

我对Gradle还是个新手,可能只是不太了解Groovy的作用域规则,但应该可以做类似的事情,对吧?我见过使用全局def来做这类事情,但对于这种特殊情况,似乎有一种更优雅的解决方案。

啊哈,这里有个窍门:我特别想将系统属性传递给我的功能测试。出于某种原因,我认为测试关闭是正确的位置,appengineFunctionalTest任务将从中继承,但事实并非如此。一旦我将测试闭包更改为appengineFunctionalTest,Gradle就能够连接这些点。我仍然对这里的范围界定规则感到有点困惑,但我相信我会学到的

appengine {
  httpPort = 8081
  ...
}

appengineFunctionalTest {
  systemProperty "httpPort", httpPort
}

所以不幸的是,这个问答现在看起来是专门针对问题中提到的AppEngineGradle插件的。感谢那些帮助我们的评论

是的,这个应该可以。真正的问题是什么?我们鼓励访问任务或扩展属性来检索其值。附带说明:在这个特定的例子中,插件已经为功能测试定义了一个源集。您应该将源代码放入此源代码集的已配置源代码目录中,并使用task appengineFunctionalTest而不是使用标准单元测试源代码目录。嗯,那么我的示例用法应该正确吗?它给了我错误,在测试结束时,它不知道如何解释appengine。也许我之前打错了;我再试试看。是的,我正在使用functionalTest目录和appengineFunctionalTest任务。谢谢你们!