2011-12-23 64 views
2

我想定製的Cobertura的行爲代碼覆蓋..默認的Cobertura儀器在構建所有的類,但我想讀一個特定的XML通常是這樣的:螞蟻腳本中的Groovy任務來自定義Cobertura?

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

我想讀這樣的xml是從外部源提供的,並且自定義Cobertura以便僅處理上述xml中指定的類。爲此,我編寫了一個groovy腳本,現在我需要將groovy腳本掛接到ant構建腳本中Cobertura ..

這是Cobertura實際處理類的螞蟻部分。

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

注意,在上面的部分,我已經明確排除的Cobertura的儀器能在我的腳本掛鉤..

顯然文件集不允許我到包括內部具有常規任務調用我的自定義腳本來讀取XML ..如果我把groovy任務外,不知何故報告不會得到生成..所以我想沒有其他選擇,除了調用文件集中的groovy腳本,以包括自定義在xml中提到的類..這怎麼做到的?

回答

0

您應該可以在單獨的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>