2011-12-26 107 views
2

当从java程序或xml文件向外部提供文件集时,如何将一组文件包含在文件集ant任务中?文件集蚂蚁,包括外部源?

以往我们使用的包括和排除的正则表达式这些样定制,

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

但我什么都不知道将要包含的文件,在这种情况下强加给他们的条件,因为我们已经知道我们应该包括以测试结束并忽略txt文件的java文件。

要包含和排除的文件将从外部源提供,如java程序或xml格式。如何包含他们在这种情况下的文件集?

回答

1

想出了一个办法做到this..Included ant脚本中的常规任务来完成这件事..说我有一个input.xml这样的:

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

,提供有关的类是细节使用简单的常规解析器included..I解析文件和配置,指定要包括在组类的蚂蚁一个新的属性..

新的属性是:

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

现在新设置的属性由以下蚂蚁脚本以包括必要的类:

<fileset dir="${classes.dir}" includes="${instrumentedclasses}" />