ant中使用java task,classpathref不起作用

来源:互联网 发布:淘宝88会员 8.8折 编辑:程序博客网 时间:2024/05/24 04:19

ant应用代码:

                <targetname="xjc">
               
  <javadir="${j3rdparty.extern.dir}"jar="${j3rdparty.extern.dir}\jaxb-xjc-annox.jar"classpathref="annox.path" failonerror="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 2attribute,但是无论怎么测试,都不能识别classpathref的新东西,没办法,试试下面的代码,竟然OK

                <targetname="xjc">
               
  <javadir="${j3rdparty.extern.dir}"jar="${j3rdparty.extern.dir}\jaxb-xjc-annox.jar"failonerror="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);
        }

 

至此,问题解决。