Google app engine 试图从Gradle测试任务访问另一个闭包的属性
首先,如果您感兴趣,我真正的目标是通知我的功能测试,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来做这类事情,但对于这种特殊情况,似乎
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任务。谢谢你们!