gpt4 book ai didi

grails - Gant构建脚本,如何检索我要执行的任务

转载 作者:行者123 更新时间:2023-12-02 14:55:44 25 4
gpt4 key购买 nike

这是在grails中,但是我不认为任何适用于grails的东西都适用。

我有一个Gant脚本,看起来像这样:

includeTargets << grailsScript( "Init" )
includeTargets << grailsScript( "TestApp" )

target(main: "run tests with jacoco code coverage...") {
taskdef ( name:'coverage', classname:'org.jacoco.ant.CoverageTask', classpathref:'core.classpath' )
coverage(*** NEED TO PUT RUN-TESTS TASK HERE ***)
}

setDefaultTarget(main)

我的想法是我正在尝试使用jacoco代码覆盖率运行一些单元测试。运行测试的目标在TestApp.groovy(allTests())中定义,可以导入并正常运行,但是jacoco的coverage任务希望将allTests()任务添加为子任务。它需要“包装”任务以运行测试。我想要做的Ant xml等效项是这样的:
<jacoco:coverage>
<taskToRunTheTests ... >
< ... setup ... >
</taskToRunTheTests>
</jacoco:coverage>

所以我想我正在寻找的是一种在Gant中从目标定义中获取Task并将其传递给coverage任务的方法(我可以执行coverageTask.addChild(theRunTestsTask)... coverageTask.execute( )(如有必要)。

这是一个晦涩的地方,希望有人可以帮助我们。

最佳答案

我设法使其正常运行,这不能完全回答您的特定问题,但可以解决最初的想法。在gant版本中进行jacoco生产的junit测试报道。我无法使jacoco:coverage正常工作,所以我与jacoco代理进行了合作。像这样的东西:

设置代理:

import static groovy.xml.NamespaceBuilder.newInstance as namespace
def jacoco = namespace(ant, 'antlib:org.jacoco.ant')

...
jacoco.agent(property: 'agentvmparam', destfile: "$dirs.projDir\\target\\jacoco.exec", includes: '*', output: 'file', dumponexit: 'true')

...

此时,我们需要将 agentvmparam传递给运行junit的JVM。
jvmarg(value:"${agentvmparam}")

它的工作就像一种魅力。

关于grails - Gant构建脚本,如何检索我要执行的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4831121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com