【问题标题】:Ant + Tomcat deploy "failed to create task or type deploy"Ant + Tomcat 部署“创建任务或类型部署失败”
【发布时间】:2013-09-04 09:29:25
【问题描述】:

我正在继承一个我需要维护的项目,并试图让 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
  • Apache Ant 1.8.4

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

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

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

知道我在搞砸什么吗?

【问题讨论】:

    标签: java tomcat ant classpath


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我添加了 到我的 build.xml,现在收到错误消息“找不到 taskdef class org.apache.catalina.ant.DeployTask”
    • 通过从 Apache 提供的示例完全重写 build.xml Ant 脚本使其工作。 taskdef 确实是答案的一部分。
    猜你喜欢
    • 2011-12-19
    • 2014-01-03
    • 1970-01-01
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-20
    相关资源
    最近更新 更多