2011-12-26 82 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}" />