java - 如何自动部署tomcat?

标签 java eclipse tomcat war

我正在将 eclipse 与 tomcat 一起使用。我正在构建和管理 Web 应用程序。我的问题是它需要一次又一次地重新启动服务器以进行简单的更改,这很烦人。那么有什么方法可以通过tomcat自动部署war,这样就可以在不重启服务器的情况下影响更改。我也想更改 jsps 和 java 类。请帮帮我。我已经阅读了该网站上的一些查询,但无法理解。请给出一步一步的方法。

最佳答案

我以为 eclipse 为您做了这件事,但我可能错了。我个人使用不同的途径在我的构建系统中解决了这个问题,因为我不使用 eclipse,但您也可以将它与 eclipse 一起使用。

我使用 Gradle,它允许我编写任务来移动文件。您也可以使用 Ant 执行此操作。要部署到 tomcat,您必须将 .war 文件放入 tomcat 服务器的 webapps 文件夹中(这在每个人的机器上都会有所不同)。然后 Tomcat 将这个 .war 文件打开并创建一个同名目录,在该文件夹中,这是用于显示文件的目录。

要将您的编辑推送到 tomcat 而无需重新启动,您需要将 .war 移动到 webapps 文件夹并删除 tomcat 为您创建的目录。这仍然会产生一个问题,即需要一秒钟来解压缩您的 war,因此另一种方法是将新类和 Web 文件直接移动到 tomcat 通过解压缩 .war 为您创建的文件夹中。我称之为热插拔。下面是我在 gradle 中编写的任务示例。您可以下载 Gradle Buildship for eclipse 并执行相同的操作。

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 的情况下在您的应用程序中呈现更改所需的内容。

关于java - 如何自动部署tomcat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31760069/

相关文章:

java - 如何在 native Activity 中显示软键盘

java - CLASSPATH 中有未使用的 JAR 文件的影响

java - Eclipse 输出文件夹

eclipse - 如何在eclipse中附加控制台?

linux - 如何查看Linux服务器上分配给tomcat的内存

tomcat - Sorl 6 有 jetty 问题

java - libgdx 绘制汉字

java - 任何人都可以提供 Java 中 O 表示法的基本示例吗?

java - 在 Oracle 中使用 Jetty 的连接池

java - 为什么Tomcat/JSP看不到这些类?