0

我正在继承一个我需要维护的项目,并试图让 Ant 部署到 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
  • 阿帕奇蚂蚁 1.8.4

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

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

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

任何想法我搞砸了什么?

4

1 回答 1

1

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

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

将文件夹放在类路径中可能没有用(您需要在类路径中包含该文件夹中的 jar 存档)。

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

于 2013-09-04T10:08:29.603 回答