我正在继承一个我需要维护的项目,并尝试将Ant部署到我的localhost上的Tomcat。当我运行部署任务时,出现以下错误:
BUILD FAILED
/.../build.xml:69: Problem: failed to create task or type deploy
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.
我试过环顾其他有同样问题的人,发现常见的问题与CLASSPATH和catalina-ant.jar有关。
我将catalina-ant.jar添加到项目中名为lib-exec的文件夹中,在我的build.xml中,这些jar加载了:
<path id="project.classpath">
<fileset dir="${libDirectory}" includes="**/*.jar" />
<fileset dir="${extLibDirectory}" includes="**/*.jar" />
</path>
和 $ {extLibDirectory} 定义为:
<property name="extLibDirectory" location="ext-lib" />
我的设置如下:
我尝试从命令行运行ant deploy任务,并添加了
export CLASSPATH=$CLASSPATH:/usr/local/Cellar/tomcat/7.0.42/libexec/lib
到*〜/ .bash_profile *尝试以这种方式包含catalina-ant.jar,但似乎没有任何效果。
任何想法我搞砸了什么?
答案 0 :(得分:1)
除了在Ant类路径中包含Tomcat类之外,还需要使用taskdef任务定义“部署”任务以让Ant在build.xml文件中识别它(将其放在顶部build.xml)。
在build.xml中定义路径和属性与类路径完全无关(当处理build.xml时,JVM已在运行)。
在类路径中放置一个文件夹可能没用(你需要在类路径中包含jar档案在该文件夹中)。
此外,无法保证Ant关心CLASSPATH环境变量;您必须检查并可能更改Ant启动脚本。