我认为只提到CATALINA_HOME是行不通的。你需要把 Catalina-ant jars 放到 Ant 的类路径上。在tomcat 7中,有4个用于此目的的jar,而在早期版本中只有一个jar。请点击此链接。
正如链接所引述的,
首先,确保Tomcat管理器配置为由Catalina-Ant使用。确保 包含在 中其中一个用户的角色中。例如: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 文件中。Catalina-Ant for Tomcat 7 需要四个 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
- 将 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>
其中有 JAR 的目录在哪里。这样,您就无需在每台构建机器上修改 Ant 安装。直接从您的 Tomcat 7 安装访问 JAR。然后,Ant 需要一个路径 ID 才能找到它们:catalina-ant-dir
<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 目录的路径,也是 Tomcat 顶级安装目录的路径。这样,Tomcat 7在你构建的每个盒子上都是必需的。appserver.home
我个人更喜欢上面的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 管理器的用户名和密码。Tomcat.password
webapp.name
是要部署的 Tomcat 应用程序的名称。
war.file
是要部署的 Tomcat 应用程序的 WAR 文件的路径。