SpringBoot打包时外置配置文件和静态文件
问题来源
- 在SpinrgBoot打包时,会生成一个可执行的jar文件,其中目录结构如下所示
test.jar
├─BOOT-INF
│ ├─classes
│ │ ├─com
│ │ ├─static
│ │ └─application.yml
│ ├─lib
| └─classpath.idx
├─org
│ └─springframework
│ └─boot
| └─loader
└─META-INF
├─maven
│ └─com.example
└─MANIFEST.MF
- 一般来说我们只需要执行
java -jar test.jar
命令就可以启动jar - 并且在
/BOOT-INF/classes/application.yml
文件中server.port
属性会记录端口号 - 有时候我们会在项目中
/resources/static
文件夹中放前端的代码文件然后一起打包 - 这一切看起来都不错,但是问题是,每次修改前端文件或者配置文件时都需要用RAR解压工具去打开jar文件,很麻烦
- 特别是jar包在运行时,还不能修改前端文件
解决办法
- 我们可以让application.yml配置文件和static静态文件外置,使其与jar包在同一个目录下
- 此时我们就可以很轻松的修改了
做法
- application.yml文件可以直接放在外面,不需要任何修改就可以,jar包启动时会先找外面的配置文件,找不到再找里面的配置文件
- 但static文件夹不行,我们需要做一些配置,在yml文件中添加
spring:
resources:
static-locations: classpath:.\static
- 此时jar就会访问与jar包同目录的static文件夹
- 若有需要时,我们还可以排除jar里面的static文件夹,这样可以缩小jar体积,排除无用项
<!-- pom.xml文件中修改 -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<excludes>
<exclude>static/**</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
不积跬步无以至千里