文件集蚂蚁,包括外部源?
问题描述:
当从java程序或xml文件向外部提供文件集时,如何将一组文件包含在文件集ant任务中?文件集蚂蚁,包括外部源?
以往我们使用的包括和排除的正则表达式这些样定制,
<fileset ...>
<include name="**/*Test.java" />
<exclude name="**/*.txt" />
但我什么都不知道将要包含的文件,在这种情况下强加给他们的条件,因为我们已经知道我们应该包括以测试结束并忽略txt文件的java文件。
要包含和排除的文件将从外部源提供,如java程序或xml格式。如何包含他们在这种情况下的文件集?
答
想出了一个办法做到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}" />