在Ant脚本中运行Ant任务时出现noclassdeffoundererror错误



我有一个Android构建脚本。它尝试使用Ant任务而不是Ant目标来完成项目上的自定义工作。有趣的构建脚本部分如下所示:

<taskdef name="gant" classname="org.codehaus.gant.ant.Gant">
    <classpath>
        <pathelement location="${gant.dir}/gant-1.9.7_groovy-1.8.4.jar" />
    </classpath>
</taskdef>
<target name="-pre-build">
    <gant target="targetA"/>
    <gant target="targetB"/>
    <gant target="targetC"/>
    <gant target="targetD"/>
    <gant target="targetE"/>
</target>
<target name="-pre-compile">
    <gant target="targetF"/>
</target>


我的构建。Ant文件肯定有这些目标,但是当使用Ant运行构建脚本时,我得到:

(...)build.xml:55: java.lang.NoClassDefFoundError: groovy/util/AntBuilder

一旦Ant到达line:

    <gant target="targetA"/>


我使用从Windows安装文件安装的Groovy 1.8.4和带有Ant视图的Eclipse Helios。甘特图。Dir属性有一个有效的路径,所以不是这样。看起来Groovy无法在构建中找到目标。即使他们在场,也要存档。我甚至尝试使用完整路径的Gant任务来构建。提供了一个大文件,但没有成功。从控制台运行Ant脚本时也会发生同样的事情。构建。Ant文件在Ant脚本中可见。

有办法解决这个问题吗?

所以,在构建内部不可见目标不是问题。但是在taskdef的类路径中缺少库。下面修复了我的问题:

<path id="gant.libs">
    <fileset dir="${gant.libs.dir}" includes="**/*.jar"/>
</path>
<taskdef name="gant" classname="org.codehaus.gant.ant.Gant">
    <classpath refid="gant.libs"/>
</taskdef>
<target name="-pre-build">
    <gant target="targetA"/>
    <gant target="targetB"/>
    <gant target="targetC"/>
    <gant target="targetD"/>
    <gant target="targetE"/>
</target>
<target name="-pre-compile">
    <gant target="targetF"/>
</target>
其中Gant .lib .dir指的是包含Gant 1.9.7二进制独立安装zip文件中的gant_groovy1.8-1.9.7.jar和groovy-all-1.8.4.jar的目录。

相关内容

  • 没有找到相关文章

最新更新