我想使用 Ant 来自动化应用程序的构建、部署、启动和停止服务器。 我能够通过 Ant 构建应用程序并将 war 文件复制到 Tomcat webapps 目录中。
在互联网上,我找到了这篇文章,其中包含更多用于启动和停止Tomcat的代码。由于我可以在没有这些的情况下成功部署,我想知道为什么它们在那里。
我的构建.xml的代码如下。
<?xml version="1.0"?>
<project name="Test" default="build-war">
<property file="build.properties"></property>
<target name="build-war" depends="clean">
<war destfile="Test.war" webxml="${web.dir}/WEB-INF/web.xml" >
<fileset dir="${web.dir}">
<include name="**/*.*"/>
</fileset>
<classes dir="${build.dir}/classes"></classes>
</war>
<copy todir="${deploy.path}" preservelastmodified="true">
<fileset
dir=".">
<include name="*.war"/>
</fileset>
</copy>
</target>
<target name="clean" description="Clean Test war directories">
<delete>
<fileset dir="${deploy.path}">
<include name="Test.war"/>
</fileset>
</delete>
</target>
</project>
没有可靠的方法可以将应用程序(重新(部署到 Web 服务器。应用程序可能无法部署的原因有很多(线程泄漏、关闭钩子、访问父类加载器(,但最终,没有可靠的方法来判断(复杂的(应用程序是否可以成功部署。
这意味着大多数开发人员已经学会了使用此循环:
- 部署。Tomcat 应该会自动注意到新文件并重新启动。
- 如果有什么奇怪的东西,请尝试重新加载(
ReloadTask
(。这告诉Tomcat"无论你相信什么,应用程序都变了!重新开始! - 如果应用程序仍然失败,请停止并重新启动 Tomcat。
- 如果失败,请停止 tomcat,删除所有文件,再次部署,部署后,再次启动 Tomcat。
- 如果失败,请删除Tomcat和所有文件,重新安装,...
是的,我曾经有一个脚本可以完成上述所有步骤。
最后,我放弃了部署。我目前的解决方案是编写一个Java应用程序,该应用程序创建一个嵌入式Tomcat或Jetty服务器,对其进行配置并启动应用程序。我只有一个类路径。无需文件复制,部署或任何此类废话。这样,我只有一个进程,容器中只有一个 Web 应用程序,并且我将所有日志都放在一个地方。