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>
posted @ 2022-09-22 10:03  小小爬虫  阅读(1392)  评论(0编辑  收藏  举报