Spring Boot 如何打包部署

管理员 148次浏览

摘要:Spring Boot 项目如何部署、上线

正文:

					
					    

项目上线

项目部署上线一般分为两种;一种是打包成 jar 包直接执行,另一种是打包成 war 包放到 tomcat 服务器下。


一、.打成 jar 包

1.如果你使用的是 maven 来管理项目,执行以下命令既可以


cd 项目跟目录(和pom.xml同级)

mvn clean package

## 或者执行下面的命令

## 排除测试代码后进行打包

mvn clean package  -Dmaven.test.skip=true


打包完成后 jar 包会生成到 target 目录下,命名一般是 项目名+版本号.jar


启动 jar 包命令


java -jar  target/spring-boot-scheduler-1.0.0.jar


这种方式,只要控制台关闭,服务就不能访问了。下面我们使用在后台运行的方式来启动:


nohup java -jar target/spring-boot-scheduler-1.0.0.jar &


也可以在启动的时候选择读取不同的配置文件


java -jar app.jar --spring.profiles.active=dev


也可以在启动的时候设置 jvm 参数


java -Xms10m -Xmx80m -jar app.jar &


2.如果使用的是 gradle,使用下面命令打包


gradle build

java -jar build/libs/mymodule-0.0.1-SNAPSHOT.jar


二、打成 war 包

打成 war 包一般可以分两种方式来实现,第一种可以通过 eclipse 这种开发工具来导出 war 包,另外一种是使用命令来完成,这里主要介绍后一种


1、maven 项目,修改 pom 包


将<packaging>jar</packaging>  

改为

<packaging>war</packaging>


2、打包时排除tomcat.


<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-tomcat</artifactId>

<scope>provided</scope>

</dependency>


在这里将 scope 属性设置为 provided,这样在最终形成的 WAR 中不会包含这个 JAR 包,因为 Tomcat 或 Jetty 等服务器在运行时将会提供相关的 API 类。


3、注册启动类


创建 ServletInitializer.java,继承 SpringBootServletInitializer ,覆盖 configure(),把启动类 Application 注册进去。外部 Web 应用服务器构建 Web Application Context 的时候,会把启动类添加进去。


public class ServletInitializer extends SpringBootServletInitializer {

    @Override

    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {

        return application.sources(Application.class);

    }

}


最后执行


mvn clean package  -Dmaven.test.skip=true


会在 target 目录下生成:项目名+版本号.war文件,拷贝到 tomcat 服务器中启动即可。

表情

共0条评论