Groovy任务在Ant脚本中定制Cobertura



我正在尝试为代码覆盖率定制Cobertura的行为。默认情况下,Cobertura包含构建中的所有类但我想读取一个特定的xml它通常看起来像:

<include>
    ....
    <targetclass name = "com.example.ExMain">
        <method name = "helloWorld" returnType="String">
    </target> 
    ....
</include>

我想读取这样一个从外部源提供的xml,并自定义Cobertura,以仅检测上述xml中指定的类。为此,我编写了一个groovy脚本,现在我需要将groovy脚本挂钩到Cobertura的ant构建脚本中。

这是ant部分的一部分,Cobertura实际上是在这里检测类的。

...
<cobertura-instrument todir="${instrumented.dir}">
  <ignore regex="org.apache.log4j.*" />
  <fileset dir="${classes.dir}">
   <exclude name="**/*.class" />//Custom change                                 
  </fileset>            
</cobertura-instrument>
...

请注意,在上面的小节中,我明确地排除了Cobertura的插装,以便能够在我的脚本中挂钩。

显然,文件集不允许我在其中包含一个groovy任务来调用我的自定义脚本来读取xml..如果我把groovy任务放在外面,不知怎么的报表就不会生成了。所以我猜除了在文件集中调用groovy脚本来包含xml中提到的自定义类之外,没有其他选择了。如何做到这一点?

您应该能够在单独的Groovy块中设置一个或多个属性,并在您的cobertura配置中引用它们。这个简化的示例展示了如何从Groovy代码片段中设置Ant属性。

<project name="MyProject" default="dist" basedir=".">
<description>
    simple example build file
</description>
<path id="groovyPath">
    <pathelement location="lib/groovy-all-1.8.6.jar"/>
</path>
<taskdef name="groovy"
         classname="org.codehaus.groovy.ant.Groovy"
         classpathref="groovyPath"/>
<target name="loadXml">
    <groovy>
        properties.parsedXml = 'some pattern that can be used to configure a task'
    </groovy>
</target>
<target name="configureTask" depends="loadXml">
    <echo message="${parsedXml}"/>
</target>

相关内容

  • 没有找到相关文章

最新更新