文件集,包括来自外部源的文件

  • 本文关键字:文件 外部 包括 ant
  • 更新时间 :
  • 英文 :


如何在文件集任务中包含一组文件,当它们是从外部提供的,说java程序或作为xml文件?

对于这类自定义,我们通常使用include和exclude正则表达式,

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

但是我对要包含的文件一无所知,要对它们施加条件,因为在这种情况下,我们已经知道我们应该包含以test结尾的java文件,忽略txt文件。

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

找到了一种方法,在ant脚本中包含了一个groovy任务来完成这个任务。假设我有一个这样的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解析器解析该文件,并在ant中配置一个新属性,该属性指定要包含的类集

新属性为:

<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}" />

相关内容

  • 没有找到相关文章

最新更新