如何无需构建WAR包快速部署Maven管理的Java Web项目至Jetty
无需构建WAR包的快速部署方案(优先Jetty)
好问题!我太懂你被20分钟WAR包构建拖慢开发节奏的痛苦了——毕竟快速迭代才是开发时的核心需求。下面几个方案能帮你实现无需构建WAR包、接近Jetty插件启动速度的部署,优先推荐Jetty相关的:
1. 最省心:Maven Jetty插件命令行启动
这其实就是你之前在Eclipse里用的Jetty插件的原生用法,只是脱离IDE用命令行触发,完全贴合你的需求:
- 先确认项目
pom.xml里已经配置了Jetty Maven插件(如果之前Eclipse能用,应该已经有了,没有的话加这段):
<build> <plugins> <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>比如9.4.51.v20230217(选和你之前兼容的版本)</version> <configuration> <httpConnector> <port>8080</port> <!-- 自定义端口 --> </httpConnector> <webApp> <contextPath>/your-app</contextPath> <!-- 自定义上下文路径 --> </webApp> </configuration> </plugin> </plugins> </build>
- 打开终端,进入项目根目录,执行命令:
mvn jetty:run - 效果:直接加载项目源码、资源和依赖,无需构建WAR包,启动速度和你之前Eclipse里用插件完全一致,还支持热部署——修改Java代码或前端资源后,Jetty会自动重新加载,不用重启服务,开发效率拉满。
2. 灵活度更高:独立Jetty+自动部署
如果不想依赖Maven插件,也可以用独立版Jetty配合快速部署:
- 先快速编译项目代码(这比打WAR快N倍,几秒就能完成):
mvn compile,如果项目有外部依赖,执行mvn dependency:copy-dependencies把依赖包复制到target/dependency目录 - 下载Jetty独立版并解压,把项目的
src/main/webapp目录复制到Jetty的webapps文件夹下,重命名成你想要的上下文名(比如your-app) - 把编译好的类(
target/classes)复制到webapps/your-app/WEB-INF/classes,把依赖包(target/dependency里的jar)复制到webapps/your-app/WEB-INF/lib - 启动Jetty:在Jetty根目录执行
java -jar start.jar - 进阶:修改Jetty的
etc/jetty-deploy.xml开启热部署,这样你修改代码后重新编译,Jetty会自动检测到变化并刷新,不用手动重启。
3. 备选:其他容器的快速开发模式
如果不局限于Jetty,这些方案同样能实现快速部署:
- Tomcat Maven插件:和Jetty插件逻辑一致,执行
mvn tomcat7:run(或对应版本的tomcat8:run/tomcat9:run),无需WAR包直接启动。pom.xml配置示例:
<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <port>8080</port> <path>/your-app</path> </configuration> </plugin>
- Spring Boot嵌入式容器:如果你的项目是Spring体系的,改造成Spring Boot项目后,直接执行
mvn spring-boot:run就能启动,默认自带嵌入式Tomcat(也可以配置换成Jetty),完全不用WAR包,启动速度快,还自带热重载支持。
总结:最推荐方案1,mvn jetty:run完全匹配你的需求——不用脱离Jetty、无需构建WAR包、启动速度和之前IDE里一致,还能热部署,完美解决你的痛点。
内容的提问来源于stack exchange,提问作者leandropintos91
相关产品推荐
相关产品推荐

