Idea中Springboot项目打包为Jar与War教程

需积分: 47 11 下载量 2 浏览量 更新于2024-09-08 收藏 862KB PDF 举报
"本文主要介绍如何使用IntelliJ IDEA(Idea)进行Spring Boot项目的打包,包括Jar包和War包的构建。这两种打包方式适用于快速开发和部署,以节省时间。" Spring Boot项目通常用于构建微服务,它内置了一个轻量级的Tomcat服务器,使得开发过程变得更加简单。然而,在某些情况下,我们可能需要将项目打包成可部署到外部服务器(如独立的Tomcat服务器)的格式。以下是如何在Idea中完成这一操作的详细步骤: 1. Jar包打包: - 在Idea中,打开Maven面板,找到`install`目标并执行。这将会编译项目,执行测试,并将最终的Jar包放置在`target`目录下。 - 使用命令行,你可以通过`java -jar jar包名称`来运行生成的Jar包。这会启动Spring Boot应用。 2. War包打包: - Spring Boot项目默认是生成Jar包的,但如果我们需要将其部署到外部的Tomcat服务器,我们需要生成War包。为此,我们需要进行一些配置更改。 - 首先,你需要在你的`pom.xml`文件中排除Spring Boot的内置Tomcat依赖。将`spring-boot-starter-web`依赖中的`spring-boot-starter-tomcat`子依赖设置为排除状态。 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> ``` - 同时,添加一个新的依赖,将`spring-boot-starter-tomcat`的范围设置为`provided`。这意味着在运行时,外部的Tomcat服务器将提供此依赖。 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> ``` - 如果项目中使用了Thymeleaf模板引擎,也需要将其排除,因为外部Tomcat可能不会支持。 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <!-- ... --> </exclusion> </exclusions> </dependency> ``` - 最后,修改`pom.xml`文件,将打包类型设置为`war`: ```xml <packaging>war</packaging> ``` - 再次执行Maven的`install`目标,Idea将会生成一个War包,该包可以被部署到外部的Tomcat服务器上。 3. SpringBootServletInitializer: - 为了使Spring Boot应用能在外部容器中运行,你需要创建一个新的启动类,该类继承自`SpringBootServletInitializer`。例如,创建一个名为`SpringBootStartApplication`的类,它需要实现`configure`方法。这个类的作用是在没有`main`方法的情况下,通过类似`web.xml`的方式初始化Spring应用上下文。 ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication public class SpringBootStartApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(SpringBootStartApplication.class); } public static void main(String[] args) { SpringApplication.run(SpringBootStartApplication.class, args); } } ``` 这个新创建的类与Spring Boot的主启动类是同级别的。 总结来说,Idea中Spring Boot项目的打包涉及到对`pom.xml`的配置调整,以及创建适配外部服务器的启动类。通过这些步骤,我们可以将项目打包成Jar或War格式,以适应不同的部署环境和需求。在进行打包前,确保理解每一步的目的,以便于后续的部署和维护。