JAVA使用jar包外前端
默认情况下,springboot 以下目录为默认的静态资源目录。其中的静态资源可以被直接访问:
classpath:/META-INF/resources/
classpath:/resources/
classpath:/static/
classpath:/public/
${user.dir}/public/
(程序运行目录下的public
目录)
优先级从上往下,当多个静态资源目录中出现同名文件时,越靠上的目录权重越高。
配置用于指定静态资源的目录,它是一个数组,可以配置多个路径。默认值为:[classpath:/META-INF/resources/, classpath:/resources/, classpath:/static/, classpath:/public/]
。静态资源目录不仅可以是 classpath
下的目录,也可以是本地磁盘目录,使用 file:
前缀进行配置,如
spring.resources.static-locations[0]=file:D:\\upload\\
还可以配合 ${}
语法,从环境变量、系统属性中读取目录信息,例如,设置应用启动目录下的 public
目录为静态资源目录:
# ${user.dir} 的值也就是 System.getProperty("user.dir")
spring.resources.static-locations[0]=file:${user.dir}\\upload\\
1、修改配置文件,把jar包同级文件夹下的static设置为第一个目录
springboot版本2.3.5配置是 spring.resources.static-location
spring:
resources:
static-locations:
- file:./static/
- classpath:/META-INF/resources/
- classpath:/resources/
- classpath:/static/
- classpath:/public/
高版本的springboot的配置可能是spring.web.resources.static-location
2、pom.xml配置把配置文件和静态资源复制出来
<build>
<plugins>
<!-- Spring Boot 打包插件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- 测试管理插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<!-- 编译器插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
</plugin>
<!-- 依赖管理插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<!-- 将jar复制到根目录的target文件夹下 -->
<execution>
<id>copy-jar</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<type>${project.packaging}</type>
<destFileName>${project.parent.artifactId}.jar</destFileName>
</artifactItem>
</artifactItems>
<outputDirectory>../target</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!-- 资源处理插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.2.0</version>
<executions>
<!-- 复制配置文件到配置目录 -->
<execution>
<id>filter-config-resources</id>
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<!-- 指定resources文件 -->
<resources>
<resource>
<directory>src/main/resources</directory>
<!-- 分环境过滤开启 -->
<filtering>true</filtering>
<includes>
<include>*.yml</include>
<include>logback-spring.xml</include>
<include>banner.txt</include>
</includes>
</resource>
</resources>
<!-- 更改输出目录 -->
<outputDirectory>../target/config</outputDirectory>
</configuration>
</execution>
<!-- 复制静态资源到静态资源目录 -->
<execution>
<id>copy-static-resources</id>
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>src/main/resources</directory>
<!-- 分环境过滤关闭 -->
<filtering>false</filtering>
<includes>
<include>static/**</include>
</includes>
</resource>
</resources>
<!-- 输出路径 -->
<outputDirectory>../target/</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
3、打包后有一个jar包,一个static文件夹,一个config文件夹。
更新前端可以直接替换static文件夹中的前端,无需重启jar包服务。
修改配置可以直接修改config文件夹中的配置文件,修改后需要重启jar包的服务。