我有ant(1.9.4)宏接受类似路径的结构作为src param,当我尝试运行它时,我得到'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>
答案 0 :(得分:0)
尝试调用像
这样的宏<testm>
<srcdir>
<path location="src"/>
</srcdir>
</testm>
答案 1 :(得分:0)
嵌套在<src>
下的<javac>
无法嵌套<srcdir>
。
而是从<src>
...
<testm>
<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>