Файл муравья, включающий из внешнего источника? - PullRequest
2 голосов
/ 26 декабря 2011

Как я могу включить набор файлов в задачу набора файлов, если они извлекаются из, скажем, из Java-программы или в виде XML-файла?

Обычно мы используем регулярные выражения include и exclude для этого вида настройки,

<fileset ...>
<include name="**/*Test.java" />
<exclude name="**/*.txt" />

Но я ничего не знаю о файлах, которые нужно включить, чтобы наложить на них условие, так как в этом случае мы уже знаем, что мы должны включить файлы Java, которые заканчиваются test, и игнорировать файлы txt ..

Файлы, которые будут включены и исключены, будут предоставлены из внешнего источника, такого как Java-программа или в формате XML. Как я могу включить их в набор файлов в таком случае?

1 Ответ

1 голос
/ 02 января 2012

Придумал способ сделать это .. Включил в муравейник задачу для выполнения этой задачи. Скажем, у меня есть input.xml, например:

<include>       
    <targetclass name="com.samples.ClassToBeIncluded1" />               
    <targetclass name="com.samples.ClassToBeIncluded2" />
    <targetclass name="com.samples.ClassToBeIncluded3" />               
    <targetclass name="com.samples.ClassToBeIncluded4" />
</include>

, который дает подробную информацию оклассы, которые должны быть включены .. Я анализирую файл, используя простой анализатор groovy, и настраиваю новое свойство в муравье, которое определяет набор классов, которые должны быть включены.

Новое свойство:

<property name="instrumentedclasses" value=""/>

Сценарий groovy, который читает внешний ввод и устанавливает свойство:

<groovy>
    def xmlParser = new XmlParser()
    def includeStr = ""
    def eachFile  = new File('input.xml')
    def includeRootNode = xmlParser.parse(eachFile)         
    includeRootNode.targetclass.each{ targetClassNode ->
        def className = targetClassNode.attribute("name")
        className = className.replace(".","/")
        includeStr = includeStr +className+".class "

    }
    properties["instrumentedclasses"] = includeStr

</groovy>

Теперь вновь установленное свойство используется нижеприведенным сценарием ant для включения необходимых классов:

<fileset dir="${classes.dir}" includes="${instrumentedclasses}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...