对于给定扩展名的脚本文件,我有一个简单的语法,它可以转换为我想要创建的 java 类文件,每个文件都包含一个可以通过反射调用的给定函数。
我想编写一个可以从 ant 脚本调用的 main 函数,该脚本可以看到 ant 构建目录,遍历所有具有我的扩展名的文件,并将每个文件转换为我没有放在 bin 目录中的 java 文件但是在包含我的扩展名的文件(脚本)的 src 目录包中。
这可能吗?
安迪
这是一个示例,说明如何在目录中为目录中的每个文件创建一个.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>
试试 ant-contrib 项目。它有一个接受文件集的任务。然后你可以用它做任何你想做的事情:
<ac:for param="file">
<fileset ... />
<sequential>
<echo message="@{file}" />
</sequential>
</ac:for>
警告:我是这个项目的所有者。它尚未采用 ant 1.7/1.8 构造(即资源集合),但这项工作正在进行中。