首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gant build scripting,如何检索要执行的任务

Gant build scripting,如何检索要执行的任务
EN

Stack Overflow用户
提问于 2011-01-29 01:19:00
回答 1查看 411关注 0票数 1

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

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

代码语言:javascript
复制
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等价物是:

代码语言:javascript
复制
<jacoco:coverage>
    <taskToRunTheTests ... >
        < ... setup ... >
    </taskToRunTheTests>
</jacoco:coverage>

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

这是一个晦涩难懂的问题,希望有人能帮我们解决。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-30 20:41:28

我设法让它正常工作,这并没有确切地回答你的具体问题,而是最初的想法;在gant构建中为junit测试提供jacoco生成的覆盖范围。我不能让jacoco :覆盖率工作,所以我用jacoco代理做了;类似这样:

设置代理:

代码语言:javascript
复制
import static groovy.xml.NamespaceBuilder.newInstance as namespace
def jacoco = namespace(ant, 'antlib:org.jacoco.ant')

..。

代码语言:javascript
复制
jacoco.agent(property: 'agentvmparam', destfile: "$dirs.projDir\\target\\jacoco.exec", includes: '*', output: 'file', dumponexit: 'true')

..。

此时,我们需要将agentvmparam传递给运行junit的JVM;

代码语言:javascript
复制
jvmarg(value:"${agentvmparam}")

它就像一个护身符一样起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4831121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档