一,背景

当我们的项目(web页面,静态资源,java代码)发上变化的时候我们不希望每一次都手动重启项目。我们用官方的devtools解决这个问题,当然方法有很多。

二,配置

1,项目配置

我们先创建一个如下目录结构的项目

Spring boot 项目 devtools 实现热部署(IDEA)_spring

pom引入所需的jar以及插件fork设置为true

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.g7go</groupId>
        <artifactId>simple-study-project</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>
    <artifactId>devtools-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>devtools-demo</name>
    <description>devtools-demo</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <!--标记指示是否需要调用运行进程。如果指定代理、jvm参数或工作目录,或者devtools存在则启用-->
                    <fork>true</fork>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

application.yml

spring:
  devtools:
    restart:
      #添加额外重启目录
      additional-paths: src/main/java
      #排除重启目录默认如下:exclude: META-INF/maven/**,META-INF/resources/**,resources/**,static/**,public/**,templates/**,**/*Test.class,**/*Tests.class,git.properties,META-INF/build-info.properties
  mvc:
    #指定静态资源上下文目录
    static-path-pattern: /**
  resources:
    #指定静态资源根目录
    static-locations: classpath:/static/
  thymeleaf:
    prefix: classpath:/templates/
    suffix: .html
    cache: false
server:
  port: 8013

2,IDEA配置

Spring boot 项目 devtools 实现热部署(IDEA)_spring_02

快捷键 shift+ctrl+alt+/

Spring boot 项目 devtools 实现热部署(IDEA)_spring_03

勾选compiler.automake.allow.when.app.running

3,测试

当修改src/main/java或者application.yml时候自动重启项目,当修改static,templates时只是重新加载资源。

测试项目地址: