在Eclipse中,我的build.xml有5个警告:
taskdef class.org.apache.catalina.ant.InstallTask cannot be found
taskdef class.org.apache.catalina.ant.ListTaskcannot be found
taskdef class.org.apache.catalina.ant.ReloadTaskcannot be found
taskdef class.org.apache.catalina.ant.StartTask cannot be found
taskdef class.org.apache.catalina.ant.StopTask cannot be found
我已经设置了以下系统环境变量(Windows 7)
ANT_HOME: C:\apache-ant-1.8.4
CATALINA_HOME: C:\apache-tomcat-7.0.29
JAVA_HOME: C:\Program Files\Java\jdk1.6.0_34
and have added %ANT_HOME%/bin to PATH
编辑:我还将catalina-ant.jar添加到C:\ apache-ant-1.8.4 \ lib
代码的更多部分:
<!-- We need the Catalina jars for Tomcat -->
<!-- * for other app servers - check the docs -->
<fileset dir="${appserver.lib}">
<include name="catalina-ant.jar"/>
</fileset>
</path>
<taskdef name="install" classname="org.apache.catalina.ant.InstallTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="list" classname="org.apache.catalina.ant.ListTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="start" classname="org.apache.catalina.ant.StartTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="stop" classname="org.apache.catalina.ant.StopTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
怎么了?
答案 0 :(得分:64)
在tomcat 7中,InstallTask被DeployTask替换。
更改您的声明,如
旧
<taskdef name="install" classname="org.apache.catalina.ant.InstallTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
与
<taskdef name="install" classname="org.apache.catalina.ant.DeployTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
答案 1 :(得分:21)
我认为只提到CATALINA_HOME不起作用。你需要把catalina-ant罐子放到Ant的类路径上。在tomcat 7中,为此目的有4个罐子,而在早期版本中只有一个罐子。请关注此link。
引自链接,
首先,确保配置Tomcat管理器以供使用 卡特琳娜 - 蚂蚁。确保角色中包含
manager-script
对于TOMCAT_HOME/conf/tomcat-users.xml
中的某个用户。对于 例如:
<tomcat-users>
<user name="admin" password="s3cr£t" roles="manager-gui,manager-script"/>
</tomcat-users>
Tomcat 6的Catalina-Ant封装在一个JAR文件中。 用于Tomcat 7的Catalina-Ant需要四个JAR文件。一来自
TOMCAT_HOME/bin
:
tomcat-juli.jar
和来自
TOMCAT_HOME/lib
的三个人:
catalina-ant.jar
tomcat-coyote.jar
tomcat-util.jar
至少有三种方法可以让JAR可用于Ant:
- 将JAR复制到
ANT_HOME/lib
文件夹中。然后Ant会找到它们。- 将JAR复制到项目中您检入源控制系统的文件夹中。然后,Ant需要路径ID才能找到它们:
<path id="catalina-ant-classpath">
<fileset dir="${catalina-ant-dir}">
<include name="catalina-ant.jar"/>
<include name="tomcat-coyote.jar"/>
<include name="tomcat-util.jar"/>
<include name="tomcat-juli.jar"/>
</fileset>
</path>
其中
catalina-ant-dir
是包含JAR的目录。这样就可以了 不需要在您构建的每台计算机上修改Ant安装 上。直接从Tomcat 7安装访问JAR。蚂蚁然后 需要路径ID才能找到它们:
<path id="catalina-ant-classpath">
<fileset dir="${appserver.lib}">
<include name="catalina-ant.jar"/>
<include name="tomcat-coyote.jar"/>
<include name="tomcat-util.jar"/>
</fileset>
<fileset dir="${appserver.home}/bin">
<include name="tomcat-juli.jar"/>
</fileset>
</path>
其中appserver.lib是Tomcat 7的lib目录和路径
appserver.home
是Tomcat顶级安装目录的路径。 这样,你构建的每个盒子都需要Tomcat 7。我个人的偏好是2以上。
现在您的Ant脚本可以看到您需要的Catalina-Ant JAR 告诉它可以使用哪些任务。这些是大多数,如果不是全部的话 Ant可用的任务。
<taskdef name="catalina-deploy" classname="org.apache.catalina.ant.DeployTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-list" classname="org.apache.catalina.ant.ListTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-reload" classname="org.apache.catalina.ant.ReloadTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-findleaks" classname="org.apache.catalina.ant.FindLeaksTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-resources" classname="org.apache.catalina.ant.ResourcesTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-start" classname="org.apache.catalina.ant.StartTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-stop" classname="org.apache.catalina.ant.StopTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-undeploy" classname="org.apache.catalina.ant.UndeployTask" classpathref="catalina-ant-classpath"/>
最后,您需要一组实际完成工作的任务。虽然如上所述,但我只倾向于使用以下几项任务:
<target name = "stop-webapp">
<catalina-stop url="${tomcat.manager.url}"
username="${tomcat.username}"
password="${tomcat.password}"
path="/${webapp.name}"
failonerror="false"/>
</target>
<target name = "start-webapp">
<catalina-start url="${tomcat.manager.url}"
username="${tomcat.username}"
password="${tomcat.password}"
path="/${webapp.name}"/>
</target>
<target name = "undeploy-webapp">
<catalina-undeploy url="${tomcat.manager.url}"
username="${tomcat.username}"
password="${tomcat.password}"
path="/${webapp.name}"
failonerror="false"/>
</target>
<target name = "deploy-webapp">
<catalina-deploy url="${tomcat.manager.url}"
username="${tomcat.username}"
password="${tomcat.password}"
path="/${webapp.name}"
war="file:${war.file}"/>
</target>
tomcat.manager.url
是Tomcat管理员所在的URL。这是 从Tomcat 6到Tomcat 7的另一个变化。通常会这样 是:http://:8080/manager/text
。
Tomcat.username
和Tomcat.password
是用户名和密码 对于Tomcat经理。
webapp.name
是您所在的Tomcat应用程序的名称 展开。
war.file
是您正在部署WAR的Tomcat应用程序的路径 文件。
答案 2 :(得分:4)
猜猜您可能需要进行此更改,因为您的问题中没有更多详细信息
<fileset dir="${appserver.home}/common/lib">
<include name="servlet*.jar"/>
</fileset>
我相信您可能在build.xml中有上述设置请将$ {appserver.home}更改为包含tomcat安装的目录
<fileset dir="C:/Program Files/Apache Software Foundation/Tomcat 5.5/common/lib">
<include name="servlet*.jar"/>
</fileset>
答案 3 :(得分:4)
在tomcat 7中,org.apache.catalina.ant包含一组Task,可用于与Manager应用程序交互,以从正在运行的Tomcat实例部署,取消部署,列出,重新加载,启动和停止Web应用程序。 用DeployTask替换InstallTask将解决构建问题。
<taskdef name="install" classname="org.apache.catalina.ant.DeployTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask">
<classpath refid="catalina-ant-classpath"/>`enter code here`
</taskdef>
<taskdef name="list" classname="org.apache.catalina.ant.ListTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="start" classname="org.apache.catalina.ant.StartTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="stop" classname="org.apache.catalina.ant.StopTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
答案 4 :(得分:1)
如果您正在使用eclipes,则需要按照以下步骤更改您的ant_home位置, 导航到窗口&gt; prefrances&gt; Ant&gt; runtime&gt; classpath&gt; AntHome 点击anthome按钮并提供你的anthome目录路径。
并解决你的问题你需要在anthome / lib文件夹中复制catalina-ant.jar
谢谢, 沙拉德帕
答案 5 :(得分:1)