我正在使用带有tomcat的eclipse。我正在构建和管理Web应用程序。我的问题是它需要一次又一次地重新启动服务器以进行简单的更改,这非常烦人。那么有没有任何方法可以通过tomcat自动部署war,这样可以在不重启服务器的情况下影响更改。我想改变jsps以及java类。请帮帮我。我在本网站上看过一些疑问,但无法理解。请逐步提供方法。
答案 0 :(得分:0)
我以为日食为你做了这件事,但我可能错了。我个人使用不同的路径在我的构建系统中解决了这个问题,因为我没有使用eclipse,但你也可以在eclipse中使用它。
我使用Gradle,它允许我编写任务来移动文件。你也可以用Ant做到这一点。要部署到tomcat,您必须将.war文件放入tomcat服务器的webapps文件夹中(这在每台机器上都是不同的)。然后Tomcat将此.war文件打开并以相同的名称创建一个目录,在该文件夹中,这是用于显示文件的内容。
要将编辑推送到tomcat而不需要重新启动,您需要将.war移动到webapps文件夹并删除为您创建的tomcat目录。这仍然会产生一个问题,即需要一秒钟解压缩你的战争,所以另一种方法是通过解压缩.war直接将新类和web文件直接移动到tomcat为你创建的文件夹中。我称之为热交换。下面是我在gradle中编写的任务示例。您可以为eclipse下载Gradle Buildship并执行相同的操作。
def tomcat = '/usr/local/Cellar/tomcat/8.0.24/libexec/webapps'
def pNmae = 'myApp'
// Below is a task to move your war to webapps
// deploy your application to your machine.
task devDeploy(type: Copy){
description 'Deploys a war of your plugin to tomcat for local development.'
from archives
into tomcat
include '**/*.war'
}
// Below is code to move the files directly into the directory tomcat makes
// for the quicker viewing of changes in a running tomcat instance
task loadClasses(type: Copy){
description 'Hot swap your tomcat class files directly'
from 'build/classes/main'
into tomcat + '/' + pName + '/WEB-INF/classes'
}
task loadWebFiles(type: Copy){
description 'Load web files into tomcat directly'
from 'src/main/webapp'
into tomcat + "/" + pName
}
task hotswap << {
description 'Swap files in a running instace of tomcat'
tasks.loadWebFiles.execute()
tasks.loadClasses.execute()
}
如果您想使用gradle或编写脚本来执行相同的操作,此解决方案仅适用于您。我希望至少这可以帮助您了解在不重新启动tomcat的情况下在应用程序中呈现更改所需的内容。