Groovy Задача в Ant Script для настройки Cobertura? - PullRequest
2 голосов
/ 23 декабря 2011

Я пытаюсь настроить поведение Cobertura для покрытия кода. По умолчанию Cobertura обрабатывает все классы в сборке, но я хочу прочитать определенный XML, который обычно выглядит следующим образом:

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

IЯ хочу прочитать такой xml, который поставляется из внешнего источника, и настроить Cobertura для инструментов только классов, указанных в приведенном выше xml. Для этого я написал сценарий groovy, и теперь мне нужно подключить сценарий groovy к муравьюсценарий сборки для 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, чтобы иметь возможность подключать мой скрипт.

Очевидно, набор файлов не позволяет мне включатьЗадание groovy внутри него, чтобы вызвать мой пользовательский сценарий для чтения xml. Если я помещу задание groovy снаружи, отчеты не будут генерироваться. Поэтому я полагаю, что нет другого выбора, кроме как вызвать сценарий groovy внутринабор файлов для включения пользовательских классов, упомянутых в XML. Как это можно сделать?

1 Ответ

0 голосов
/ 24 марта 2012

Вы должны иметь возможность установить одно или несколько свойств в отдельном блоке Groovy и ссылаться на них в своей конфигурации cobertura. В этом упрощенном примере показано, как установить свойство Ant из фрагмента кода Groovy.

<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>

...