我继承了一个需要维护的项目,并试图将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操作系统X 10.8.4
- Tomcat 7.0.42.0(通过Homebrew安装)
- Java 1.6.0_51
- Apache Ant 1.8.4
我尝试从命令行运行蚂蚁部署任务,还添加了
export CLASSPATH=$CLASSPATH:/usr/local/Cellar/tomcat/7.0.42/libexec/lib
到*~/.bash_profile*尝试以这种方式包含catalina-ant.jar,但似乎什么都不起作用。
你知道我搞砸了什么吗?
除了在Ant类路径中包含Tomcat类之外,还需要定义"deploy"任务,让Ant使用taskdef任务(将其放在build.xml的顶部)在build.xml文件中识别它
在build.xml中定义路径和属性与类路径完全无关(当处理build.xml时,JVM已经在运行)。
将文件夹放在类路径中可能是无用的(您需要在类路径中将jar归档文件包含在该文件夹中)。
此外,不能保证Ant关心CLASSPATH环境变量;您必须检查并可能更改Ant启动脚本。