以Gradle插件的方式为Java web项目启动Tomcat

简介: 在社区版IntelliJ IDEA除了用SmartTomcat,还有什么方式可以在可调试的情况下启动Tomcat呢,来试试com.bmuschko.tomcat插件吧

曾经在NetBeans,Eclipse的时代,web项目搭配Tomcat启动是较为轻松的,myeclipse甚至是内置了一个tomcat服务器,连自己去下载tomcat这一步都不需要。但Java的IDE进入Intellij IDEA流行时,就出现了一些小问题...

不得不承认近些年Intellij IDEA的迭代速度是有些快的,一年就能有几次大更新,最开始很多人应该都是用Ultimate版本的,但即使可以像myeclipse一样能破解,但每次发布新版时还是会有些困扰,比以前是麻烦了许多,很多人不得不转使用Community版,问题就在于这个版本是没有Tomcat支持的,大多数情况下只能去安装Smart Tomcat插件,当然了,还有个Tomcat runner的插件。这些IDE插件固然是可以的,但只有一套方案显然单薄了些,而且国内安装IDEA插件也很容易安装失败,这里介绍一种新的方式,既引入一个Gradle插件来启动Tomcat,也是不需要自己另外再安装Tomcat本体的,只安装插件即可。

这里默认介绍的是groovy语言的gradle,也是gradle长期以来的默认语言,不过如果是kotlin也差不太多,依葫芦画瓢即可,首先在build.gradle中开始部分引入插件本体:

plugins {
   
    id 'com.bmuschko.tomcat'
}

当然这样apply plugin也可以:

apply plugin: "com.bmuschko.tomcat"

然后引入tomcat本体到dependencies中,毕竟是要随项目一起启动的:

dependencies {
   
    def tomcatVersion = '8.5.16'
    tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}",
                    "org.apache.tomcat.embed:tomcat-embed-logging-juli:8.5.2",
                    "org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}",
                    "org.apache.tomcat.embed:tomcat-embed-websocket:${tomcatVersion}"
}

如果要使用9版本的话,tomcatVersion9.0.75tomcat-embed-logging-juli9.0.0.M6

在末尾还需要对tomcat进行一些设定:

tomcat {
   
    httpProtocol = 'org.apache.coyote.http11.Http11Nio2Protocol'
    ajpProtocol  = 'org.apache.coyote.ajp.AjpNio2Protocol'
}

这两个属性可以说是必需,当然可以设置的部分很多,以下常用属性一看便知:

tomcat {
    httpPort = 8090
    httpsPort = 8091
    enableSSL = true
    contextPath = 'url-path'
}

当然还有很多,详细可以看它的github文档介绍:https://github.com/bmuschko/gradle-tomcat-plugin#extension-properties

最后还有一点,需要在settings.gradle中写一段buildscript

buildscript {
    repositories {
        gradlePluginPortal()
    }

    dependencies {
        classpath 'com.bmuschko:gradle-tomcat-plugin:2.7.0'
    }
}

然后刷新IDEA的Gradle面板就能看见Tasks里有一个web application了:

image.png

执行tomcatRun即可运行,这种方式总体看上去也是比较便捷的,不过说便捷当然还是比不了spring-boot,但也有很多人喜欢这样传统的方式。国内也有很多文章介绍这个com.bmuschko.tomcat,连b站专栏都有了,不过感觉都是多多少少有些遗漏,根据我实践来看最后buildscript的这一段是不能跳过的。

本文写作于2023年5月17日并发布于lyrieek的掘金,于2023年7月16日进行修订发布于lyrieek的阿里云开发者社区。

目录
相关文章
|
1月前
|
Java
轻松上手Java字节码编辑:IDEA插件VisualClassBytes全方位解析
本插件VisualClassBytes可修改class字节码,包括class信息、字段信息、内部类,常量池和方法等。
101 6
|
12天前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
73 26
|
4月前
|
Java 应用服务中间件 Shell
Nginx+Keepalived+Tomcat 实现Web高可用集群
Nginx+Keepalived+Tomcat 实现Web高可用集群
138 0
|
4月前
|
Java 应用服务中间件 Windows
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
|
3月前
|
Arthas Java 测试技术
Java字节码文件、组成,jclasslib插件、阿里arthas工具,Java注解
Java字节码文件、组成、详解、分析;常用工具,jclasslib插件、阿里arthas工具;如何定位线上问题;Java注解
Java字节码文件、组成,jclasslib插件、阿里arthas工具,Java注解
|
3月前
|
安全 Oracle Java
edge浏览器加载java插件
edge浏览器加载java插件
241 1
|
2月前
|
Java 应用服务中间件 Apache
浅谈Tomcat和其他WEB容器的区别
Tomcat是一款轻量级的免费开源Web应用服务器,常用于中小型系统及并发访问量适中的场景,尤其适合开发和调试JSP程序。它不仅能处理HTML页面,还充当Servlet和JSP容器。相比之下,物理服务器是指具备处理器、硬盘等硬件设施的服务器,如云服务器,其设计目标是在处理能力、稳定性和安全性等方面提供高标准服务。简言之,Tomcat专注于运行Java应用,而物理服务器则提供基础计算资源。
|
4月前
|
网络协议 Java 应用服务中间件
Tomcat源码分析 (一)----- 手撕Java Web服务器需要准备哪些工作
本文探讨了后端开发中Web服务器的重要性,特别是Tomcat框架的地位与作用。通过解析Tomcat的内部机制,文章引导读者理解其复杂性,并提出了一种实践方式——手工构建简易Web服务器,以此加深对Web服务器运作原理的认识。文章还详细介绍了HTTP协议的工作流程,包括请求与响应的具体格式,并通过Socket编程在Java中的应用实例,展示了客户端与服务器间的数据交换过程。最后,通过一个简单的Java Web服务器实现案例,说明了如何处理HTTP请求及响应,强调虽然构建基本的Web服务器相对直接,但诸如Tomcat这样的成熟框架提供了更为丰富和必要的功能。
|
3月前
|
关系型数据库 Java MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【9月更文挑战第6天】在Linux环境下安装JDK 1.8、Tomcat和MariaDB是搭建Java Web应用的关键步骤。本文详细介绍了使用apt-get安装OpenJDK 1.8、下载并配置Tomcat,以及安装和安全设置MariaDB(MySQL的开源分支)的方法。通过这些步骤,您可以快速构建一个稳定、高效的开发和部署环境,并验证各组件是否正确安装和运行。这为您的Java Web应用提供了一个坚实的基础。
57 0
|
4月前
|
缓存 前端开发 Java
【Azure 应用服务】App Service 使用Tomcat运行Java应用,如何设置前端网页缓存的相应参数呢(-Xms512m -Xmx1204m)?
【Azure 应用服务】App Service 使用Tomcat运行Java应用,如何设置前端网页缓存的相应参数呢(-Xms512m -Xmx1204m)?
下一篇
DataWorks