Spring Boot 项目默认的会将所有资源文件、依赖文件、配置文件等打包成单一的 jar 文件,但是有时候我们并不想让配置文件、依赖包都跟可执行文件打包到一起。
这时候可以在 pom.xml 文件中进行配置,从而使资源文件、依赖包和可执行文件分离。
本文主要是分离配置文件,pom.xml配置如下:
<build>
<!-- 资源配置 -->
<resources>
<resource>
<filtering>true</filtering>
<directory>src/main/resources</directory>
<!--排除配置文件-->
<excludes>
<!--使用通配符,当然可以定义多个exclude标签进行排除-->
<exclude>**/application*.yml</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot-dependencies.version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 资源文件处理插件 -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<!-- 复制配置文件 -->
<execution>
<id>copy-resources</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<!-- 复制配置文件到指定目录 -->
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/application*.yml</include>
</includes>
</resource>
</resources>
<outputDirectory>${project.build.directory}/config</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
打包时使用 resources 的 exclude 排除指定的资源文件,使用 maven-resources-plugin 将配置文件输出到外部目录。
启动 jar 时使用以下命令即可启动:
java -Dloader.path=config/ -jar xxxx.jar
如果是有依赖文件可以逗号分隔:
java -Dloader.path=lib/,config/ -jar xxxx.jar