在启动时覆盖Tomcat默认值

时间:2011-12-02 20:27:15

标签: tomcat configuration

我目前将我的Ant构建配置为具有deploy-local目标,该目标创建我的Web应用程序的WAR,然后将该WAR文件复制到我本地Tomcat的webapps/目录。

问题是,每次运行Tomcat时,它首先将其webapps/目录中的所有WAR解包到文件夹中,因此在Tomcat完成之前,MyWebApp.war将被解压缩到名为MyWebApp/的目录中启动。

很明显,Tomcat随后会从复制的目录(而不是我的WAR)中部署。我通过停止Tomcat,删除WAR(但保留复制的目录),然后重新启动Tomcat来证明这一点......它有效!

这里的巨大痛苦是每次我调整我的项目并运行deploy-local来测试它们时,我必须首先手动删除webapps/中复制的目录(否则Tomcat)将忽略从Ant复制的新WAR文件,而只是从旧的复制目录部署!)。

这已经变得非常烦人!我和我的技术负责人谈过这个问题,他似乎没有同样的问题(我们都使用Tomcat 7.0.19 )。此外,我们在Dev,QA和Production中运行的Tomcat实例也不会受此影响。这告诉我我的配置问题。

请指教!!!并提前感谢!

1 个答案:

答案 0 :(得分:0)

您可以使用ant删除目录,并允许Tomcat通过将其放入build.xml中来自动部署新的webapp:

<target name="deploy" depends="war" description="Deployment target.">
    <delete dir="${tomcat.home.dir}/webapps/MYWEBAPP"/>
    <delete file="${tomcat.home.dir}/webapps/MYWEBAPP.war"/>
    <copy file="${build.dir}/MYWEBAPP.war" todir="${tomcat.home.dir}/webapps"/>
</target>

在这种情况下运行ant deploy就可以了。

或者,从Eclipse内部运行Tomcat和您的webapp,它提供Serve模块的选项而不发布(意味着Eclipse项目直接运行而不需要构建WAR)。

我不知道如何让Tomcat在不提取的情况下运行WAR。