ant应用代码:
<targetname="xjc">
<javadir="${j3rdparty.extern.dir}"jar="${j3rdparty.extern.dir}\jaxb-xjc-annox.jar"classpathref="annox.path" failοnerrοr="true"fork="true">
<!--
<argvalue="-cp" />
<argvalue="${j3rdparty.extern.dir}\jaxb2-basics-annotate-0.6.3.jar;${j3rdparty.extern.dir}\annox-0.5.1.jar;${j3rdparty.extern.dir}\jaxb2-basics-tools-0.6.3.jar;${j3rdparty.extern.dir}/commons-logging-1.1.1.jar;${j3rdparty.extern.dir}/commons-lang-2.4.jar;${bin.dir}"/>
-->
<argvalue="-extension" />
<argvalue="-Xannotate" />
<argvalue="-d" />
<argvalue="${src.dir}" />
<argvalue="-p" />
<argvalue="tellabs.inmfwk.tool.snod.xsd.snodmodule" />
<argvalue="${schema.dir}/snodmodule.xsd" />
</java>
</target>
<java>这个task中,使用了classpathref和 jar 2个attribute,但是无论怎么测试,都不能识别classpathref的新东西,没办法,试试下面的代码,竟然OK。
<targetname="xjc">
<javadir="${j3rdparty.extern.dir}"jar="${j3rdparty.extern.dir}\jaxb-xjc-annox.jar"failοnerrοr="true" fork="true">
<argvalue="-cp" />
<argvalue="${j3rdparty.extern.dir}\jaxb2-basics-annotate-0.6.3.jar;${j3rdparty.extern.dir}\annox-0.5.1.jar;${j3rdparty.extern.dir}\jaxb2-basics-tools-0.6.3.jar;${j3rdparty.extern.dir}/commons-logging-1.1.1.jar;${j3rdparty.extern.dir}/commons-lang-2.4.jar;${bin.dir}"/>
<argvalue="-extension" />
<argvalue="-Xannotate" />
<argvalue="-d" />
<argvalue="${src.dir}" />
<argvalue="-p" />
<argvalue="tellabs.inmfwk.tool.snod.xsd.snodmodule" />
<argvalue="${schema.dir}/snodmodule.xsd" />
</java>
</target>
这次没使用classpathref,而是在参数中增加了-cp,就可以了。
查原因。
ant源代码,1.8.4版本中,java.java中,明确写着:
if (getCommandLine().getClasspath() != null
&&getCommandLine().getJar() != null) {
log("When using'jar' attribute classpath-settings are ignored. "
+ "See themanual for more information.", Project.MSG_VERBOSE);
}
至此,问题解决。