Spring Boot 简单的打包部署

Posted maigy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot 简单的打包部署相关的知识,希望对你有一定的参考价值。

  Spring Boot 支持使用 Jar 内嵌 Web 服务器(Tomcat)的方式发布,也支持生成 war 包放在外置的 web 服务器运行。

  1、使用 Jar 发布应用

  配置步骤:

  ① pom.xml 要显示加入插件 org.springframework.boot,否则无法产生 jar 清单文件,导致打出来的 jar 无法使用命令运行。

 1 <build>
 2         <plugins>
 3             <plugin>
 4                 <groupId>org.springframework.boot</groupId>
 5                 <artifactId>spring-boot-maven-plugin</artifactId>
 6                 <!-- 排除重新打包 -->
 7                 <executions>
 8                     <execution>
 9                         <goals>
10                             <goal>repackage</goal>
11                         </goals>
12                     </execution>
13                 </executions>
14                 
15             </plugin>
16         </plugins>
17     </build>
18     

  ② 使用里面 package 打包

技术图片

  ③ 打包成功,产生 spring-boot-demo-01.-1.0.jar 文件

技术图片

  ④ 将 spring-boot-demo-01-1.0.jar 复制到一个文件夹下,在同一级目录编写一个 bat 文件

技术图片

  内容格式:#java  -jar  <jar 名>,如下:

java -jar spring-boot-demo-01-1.0.jar

  ⑤ 双击 bat 文件 startup.bat

技术图片

  可以修改内嵌 Tomcat 的参数

  在 application.properties 设置相关参数即可,如:

#设置Tomcat端口
server.port=80
#设置Tomcat路径编码
server.tomcat.uri-encoding=UTF-8
#设置超时时间
server.connection-timeout=1000

 

2、使用 war 发布应用

  配置流程:

  ① 修改 pom.xml 文件去掉嵌入式的 Tomcat 服务器,以及增加 serlvet-api 依赖包

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <!-- 移除嵌入式tomcat服务器 -->
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<!-- 加入servlet-api的支持 -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

  ② 修改 pom.xml 文件的打包方式为 war

技术图片

  ③ 增加一个 web 程序的 WEB 入口类要和 Application 同一级目录

 1 package cn.mgy;
 2 
 3 import org.springframework.boot.builder.SpringApplicationBuilder;
 4 import org.springframework.boot.web.support.SpringBootServletInitializer;
 5 /**
 6  * 如果项目需要使用war发布,需要创建这个类,作为web程序的入口
 7  * @author ranger
 8  *
 9  */
10 public class ServletInitializer extends SpringBootServletInitializer {
11 
12     @Override
13     protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
14         //表示获得web的请求时,调用Application类的实现
15         return builder.sources(Application.class);
16     }
17 }

  ④ 打包生成 war 文件

技术图片

  ⑤ 复制 spring-boot-demo-01-1.0.war 放在 Tomcat 的 webapps 下

技术图片

  ⑥ 启动 Tomcat,Tomcat 控制台提示 SpringBoot 信息

技术图片

  ⑦ 浏览器访问,成功

http://localhost:8080/spring-boot-demo-01-1.0/index

技术图片

  注意事项:

  ① web 网站入口类一定要继承 SpringBootServletInitializer 类,而且必须要给 SpringBoot 入口类 Application 统一级目录

  ② 

  1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3     <modelVersion>4.0.0</modelVersion>
  4     <groupId>cn.gzsxt.platform</groupId>
  5     <artifactId>basic_platform_spring_boot</artifactId>
  6     <version>1.0</version>
  7     <packaging>war</packaging>
  8 
  9     <parent>
 10         <groupId>org.springframework.boot</groupId>
 11         <artifactId>spring-boot-starter-parent</artifactId>
 12         <version>1.5.13.RELEASE</version>
 13         <relativePath /> <!-- lookup parent from repository -->
 14     </parent>
 15 
 16 
 17 
 18     <!-- 设置自定义属性 -->
 19     <properties>
 20        
 21         <project.build.sourceEncoding>GBK</project.build.sourceEncoding>
 22         <project.reporting.outputEncoding>GBK</project.reporting.outputEncoding>
 23         
 24         <java.version>1.8</java.version>
 25         <servlet.version>3.0.1</servlet.version>
 26         <jsp.version>2.2.1</jsp.version>
 27     </properties>
 28 
 29 
 30     <!-- 依赖 -->
 31     <dependencies>
 32         <dependency>
 33             <groupId>org.springframework.boot</groupId>
 34             <artifactId>spring-boot-starter-tomcat</artifactId>
 35             <scope>provided</scope>
 36         </dependency>
 37         <dependency>
 38             <groupId>org.springframework.boot</groupId>
 39             <artifactId>spring-boot-starter-thymeleaf</artifactId>
 40             <!-- 排除掉内置的tomcat使用我们外置tomcat -->
 41             <exclusions>
 42                 <exclusion>
 43                     <groupId>org.springframework.boot</groupId>
 44                     <artifactId>spring-boot-starter-tomcat</artifactId>
 45                 </exclusion>
 46             </exclusions>
 47         </dependency>
 48 
 49         <dependency>
 50             <groupId>org.springframework.boot</groupId>
 51             <artifactId>spring-boot-starter-web</artifactId>
 52             <!-- 移除嵌入式tomcat服务器 -->
 53             <exclusions>
 54                 <exclusion>
 55                     <groupId>org.springframework.boot</groupId>
 56                     <artifactId>spring-boot-starter-tomcat</artifactId>
 57                 </exclusion>
 58             </exclusions>
 59         </dependency>
 60         <dependency>
 61             <groupId>org.springframework.boot</groupId>
 62             <artifactId>spring-boot-starter-jdbc</artifactId>
 63         </dependency>
 64 
 65         <dependency>
 66             <groupId>org.mybatis.spring.boot</groupId>
 67             <artifactId>mybatis-spring-boot-starter</artifactId>
 68             <version>1.3.2</version>
 69         </dependency>
 70 
 71         <dependency>
 72             <groupId>mysql</groupId>
 73             <artifactId>mysql-connector-java</artifactId>
 74             <scope>runtime</scope>
 75         </dependency>
 76         <dependency>
 77             <groupId>org.springframework.boot</groupId>
 78             <artifactId>spring-boot-starter-test</artifactId>
 79             <scope>test</scope>
 80         </dependency>
 81         <!-- servlet -->
 82         <dependency>
 83             <groupId>javax.servlet</groupId>
 84             <artifactId>javax.servlet-api</artifactId>
 85         </dependency>
 86         <!-- jsp -->
 87         <dependency>
 88             <groupId>javax.servlet.jsp</groupId>
 89             <artifactId>javax.servlet.jsp-api</artifactId>
 90             <version>2.2.1</version>
 91         </dependency>
 92 
 93         <dependency>
 94             <groupId>org.apache.commons</groupId>
 95             <artifactId>commons-dbcp2</artifactId>
 96         </dependency>
 97 
 98         <!-- jstl -->
 99 
100 
101         <dependency>
102             <groupId>javax.servlet</groupId>
103             <artifactId>jstl</artifactId>
104 
105         </dependency>
106 
107 
108         <dependency>
109             <groupId>log4j</groupId>
110             <artifactId>log4j</artifactId>
111             <version>1.2.17</version>
112             
113         </dependency>
114         
115     </dependencies>
116 
117     <!-- 构建项目使用Tomcat7插件 -->
118     <build>
119 
120 
121         <plugins>
122 
123 
124             <!-- 配置isntall安装时,不要执行JUnit测试代码 -->
125 
126             <plugin>
127                 <groupId>org.apache.maven.plugins</groupId>
128                 <artifactId>maven-surefire-plugin</artifactId>
129 
130                 <configuration>
131                     <!-- 跳过打包安装时自动执行Junit的测试代码 -->
132                     <skipTests>true</skipTests>
133                 </configuration>
134             </plugin>
135             <!-- 配置编译的时候使用1.8 的JDK -->
136 
137             <plugin>
138                 <groupId>org.apache.maven.plugins</groupId>
139                 <artifactId>maven-compiler-plugin</artifactId>
140 
141                 <configuration>
142                     <!-- 源码检查时使用1.8的JDK -->
143                     <source>1.8</source>
144                     <!-- 源码打包成目标程序时,使用1.8JDK -->
145                     <target>1.8</target>
146                 </configuration>
147             </plugin>
148 
149 
150             <plugin>
151                 <groupId>org.apache.maven.plugins</groupId>
152                 <artifactId>maven-war-plugin</artifactId>
153 
154                 <configuration>
155                     <failOnMissingWebXml>false</failOnMissingWebXml>
156                 </configuration>
157             </plugin>
158         </plugins>
159     </build>
160 
161 </project>

  ③ 将映射接口使用@Mapper

@Mapper
public interface ModularMapper 

  ④ 关闭 thymeleaf 模板引擎

  注意:关闭 thymeleaf 模板引擎

#忽略默认的模板引擎
spring.thymeleaf.cache=false
spring.thymeleaf.enabled=false

  ⑤ 启动的是 WebApplicationInitializer 类

  所以直接启动页面就可以

 1 package cn.mgy.platform;
 2 
 3 import org.springframework.boot.builder.SpringApplicationBuilder;
 4 import org.springframework.boot.web.support.SpringBootServletInitializer;
 5 
 6 public class WebApplicationInitializer extends  SpringBootServletInitializer  {
 7 
 8     @Override
 9     protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
10     
11        return builder.sources(Application.class);
12     }
13 
14 }

 

以上是关于Spring Boot 简单的打包部署的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot框架开发Web项目 Spring Boot项目的打包和部署

Spring Boot框架开发Web项目 Spring Boot项目的打包和部署

spring boot怎么部署到服务器

打包部署spring boot项目到Linux并后台运行

打包部署spring boot项目到Linux并后台运行

《Spring Boot编程实战与面试指南》05-04:Spring Boot应用的打包和部署