我希望能够让不同的目标做同样的事情,因为:
ant build <- this would be a normal (default) build
ant safari <- building the safari target.
目标看起来像这样:
<target name="build" depends="javac" description="GWT compile to JavaScript">
<java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler">
<classpath>
<pathelement location="src"/>
<path refid="project.class.path"/>
</classpath>
<jvmarg value="-Xmx256M"/>
<arg value="${lhs.target}"/>
</java>
</target>
<target name="safari" depends="javac" description="GWT compile to Safari/JavaScript">
<java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler">
<classpath>
<pathelement location="src"/>
<path refid="project.class.path"/>
</classpath>
<jvmarg value="-Xmx256M"/>
<arg value="${lhs.safari.target}"/>
</java>
</target>
(没关系第一个想法就是罢工:抛出蚂蚁!这还不是一个选项。)我尝试使用macrodef,但得到了一个奇怪的错误信息(即使消息并不暗示它,它认为它必须将目标放在顺序中)我不想像这样编写cmdline:ant -Dwhatever=nevermind
。有什么想法吗?
答案 0 :(得分:3)
我的第一次尝试(目前无法测试):
<target name="build" depends="javac, create.mymacro" description="GWT compile to JavaScript">
<mymacro target="${lhs.target}"/>
</target>
<target name="safari" depends="javac, create.mymacro" description="GWT compile to Safari/JavaScript">
<mymacro target="${lhs.safari.target}"/>
</target
<target name="create.mymacro">
<macrodef name="mymacro">
<attribute name="target" default="${lhs.target}"/>
<sequential>
<java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler">
<classpath>
<pathelement location="src"/>
<path refid="project.class.path"/>
</classpath>
<jvmarg value="-Xmx256M"/>
<arg value="@{target}"/>
</java>
</sequential>
</macrodef>
</target>