我有一个ant (1.9.4)宏,它接受类似路径的结构作为src参数,当我尝试运行它时,我得到了'FILE_NAME.java is not a directory'。
我的构建文件:
<project name="test" default="main">
<macrodef name="testm">
<element name="srcdir"/>
<sequential>
<javac destdir="target">
<src>
<srcdir/>
</src>
</javac>
</sequential>
</macrodef>
<target name="build-project">
<testm>
<srcdir>
<fileset dir="src">
<include name="**/*.java"/>
</fileset>
</srcdir>
</testm>
</target>
<target name="main" depends="build-project"/>
</project>发布于 2015-10-13 20:01:17
尝试调用像这样的宏
<testm>
<srcdir>
<path location="src"/>
</srcdir>
</testm>发布于 2015-10-13 22:55:13
嵌套在<javac>下的<src>不能有嵌套在其中的<srcdir>。
相反,从<testm>的调用者传递<src> ...
<macrodef name="testm">
<element name="srcdir"/>
<sequential>
<!-- Nest <srcdir> directly under <javac> -->
<javac destdir="target">
<srcdir/>
</javac>
</sequential>
</macrodef>
<target name="build-project">
<testm>
<srcdir>
<!-- Pass <src> directly to <javac> via the macrodef -->
<src path="src"/>
</srcdir>
</testm>
</target>我删除了<include name="**/*.java"/>,因为默认情况下<javac>包含所有**/*.java文件。
作为另一个示例,您可以使用一个参数将多个<javac>选项传递给<testm> ...
<macrodef name="testm">
<element name="javac-args"/>
<sequential>
<javac destdir="target">
<javac-args/>
</javac>
</sequential>
</macrodef>
<target name="build-project">
<testm>
<javac-args>
<src path="src"/>
<classpath>
<pathelement location="my.jar"/>
</classpath>
</javac-args>
</testm>
</target>https://stackoverflow.com/questions/33089405
复制相似问题