Gradle 当外部进程为“时,执行处理的梯度任务”;准备好了吗;
我希望我的gradle任务:Gradle 当外部进程为“时,执行处理的梯度任务”;准备好了吗;,gradle,Gradle,我希望我的gradle任务: 执行命令(“启动我的服务器”的外部进程) 等待外部进程的特定输出,在标准输出中说“服务器就绪” 在我的gradle任务中做点什么(基本上是与我的外部任务对话) 当我完成工作后,通过启动另一个“停止我的服务器”命令来结束外部进程 两个命令完成后,结束任务 这类似于启动服务器来运行集成测试,但这不是tomcat/jetty类型的服务器,因此需要从命令行启动它,并等待服务器通过服务器的标准输出“就绪” 我目前可以使用exec任务运行我的任务并获得输出。所以我想我可以用Gr
请注意,我是Gradle的新手,因此,如果您对这个主题有任何建议,我将不胜感激。据我所知,Gradle(1.4)的当前版本对于启动/关闭外部进程没有专门的DSL支持。您可以在groovy的内部构建脚本中实现它,这应该不会太难。总体模式:可能不会-有太多不同的可能性/组合,不可能有任何类型的标准模板 但用一组任务构建自己的逻辑很简单。 最复杂的部分是等待外部进程,Gradle确实有一个DSL(Ant实际上有核心逻辑/DSL,Gradle只是在包装它) 我的任务是等待Postgres出现在本地docker容器中:
task waitForLocalDb(){
group = 'docker.db'
mustRunAfter localApiSvcDbRunCleanContainer
doFirst{
println "waiting for Postgres to come up"
ant.waitfor(
maxwait:"10", maxwaitunit:"second",
checkevery:"500", checkeveryunit: "millisecond"
){
socket(server:"192.168.99.100", port:"5544")
}
}
}
这将通过检查Postgres是否正在侦听指定的端口来等待Postgres
您可以使用Ant任务执行各种操作,比如检查服务器是否在某个文件中的某个位置显示“服务器已就绪”(“在stdout中”在很大程度上取决于您启动进程的方式)
或者,您可以在特定URL中检查“服务器已就绪”或类似内容,请参见,据我所知,没有现成的支持。我实现了一个类似的方法。该代码可能会给您一个开始。@kctang如果您对所使用的技术有明确的了解,我们可以为您提供精确的解决方案。并不是说你真的需要通过gradle编码,而是一些运行嵌入式测试框架的集成测试框架。@Rajmahendra它是一个自定义开发Java RMI服务器/客户端。我需要服务器应用程序write stdout“===服务器就绪===”,然后才能使用Java RMI客户端进行连接,以确认服务器工作正常,然后关闭并继续。