一,背景
当我们的项目(web页面,静态资源,java代码)发上变化的时候我们不希望每一次都手动重启项目。我们用官方的devtools解决这个问题,当然方法有很多。
二,配置
1,项目配置
我们先创建一个如下目录结构的项目
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配置
快捷键 shift+ctrl+alt+/
勾选compiler.automake.allow.when.app.running
3,测试
当修改src/main/java或者application.yml时候自动重启项目,当修改static,templates时只是重新加载资源。
测试项目地址: