ant目标,它使用给定的扩展名迭代构建路径中的所有文件

时间:2012-05-31 03:35:47

标签: java ant

我有一个给定扩展的脚本文件的简单语法,它转换为我想要创建的java类文件,每个文件包含一个可以通过反射调用的给定函数。

我想编写一个可以从ant脚本中调用的主函数,该脚本可以看到ant构建目录,遍历所有具有我的扩展名的文件,并将每个文件转换为我不放入的java文件bin目录,但在src目录包中,它包含带有我的扩展名的文件(脚本)。

这可能吗?

安迪

2 个答案:

答案 0 :(得分:1)

以下示例说明如何在.java目录中为src目录中的每个.ext文件创建bin文件。

但是对于代码生成,我希望您需要实现自定义Ant任务。

<project default="test">

    <target name="test">
        <copy todir="src">
            <fileset dir="bin">
                <include name="**/*.ext"/>
            </fileset>
            <globmapper from="*.ext" to="*.java"/>
            <filterchain>
                <!--
                    You will do some custom filtering
                    to create your new Java src file.
                    This is just for illustration.
                 -->
                <headfilter lines="1"/>
                <tokenfilter>
                    <replaceregex pattern=".*" replace="your new content"/>
                </tokenfilter>
            </filterchain>
        </copy>
    </target>

    <!-- use with care! -->
    <target name="clean">
        <delete dir="src">
            <include name="**/*.java"/>
        </delete>
    </target>

</project>

答案 1 :(得分:0)

尝试ant-contrib项目。它有一个采用文件集的任务。然后你可以随心所欲地做任何事情:

<ac:for param="file">
  <fileset ... />
  <sequential>
    <echo message="@{file}" />
  </sequential>
</ac:for>
警告:我是这个项目的所有者。它尚未采用ant 1.7 / 1.8结构(即资源集合),但这项工作正在进行中。