Ant + Tomcat部署“无法创建任务或类型部署”

时间:2013-09-04 09:29:26

标签: java tomcat ant classpath

我正在继承一个我需要维护的项目,并尝试将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" />

我的设置如下:

  • MAC OS X 10.8.4
  • Tomcat 7.0.42.0(通过Homebrew安装)
  • Java 1.6.0_51
  • Apache Ant 1.8.4

我尝试从命令行运行ant deploy任务,并添加了

export CLASSPATH=$CLASSPATH:/usr/local/Cellar/tomcat/7.0.42/libexec/lib

到*〜/ .bash_profile *尝试以这种方式包含catalina-ant.jar,但似乎没有任何效果。

任何想法我搞砸了什么?

1 个答案:

答案 0 :(得分:1)

除了在Ant类路径中包含Tomcat类之外,还需要使用taskdef任务定义“部署”任务以让Ant在build.xml文件中识别它(将其放在顶部build.xml)。

在build.xml中定义路径和属性与类路径完全无关(当处理build.xml时,JVM已在运行)。

在类路径中放置一个文件夹可能没用(你需要在类路径中包含jar档案在该文件夹中)。

此外,无法保证Ant关心CLASSPATH环境变量;您必须检查并可能更改Ant启动脚本。