我有一个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>