第一步:Maven资源过滤(在pom.xml中启用资源过滤并定义runtime-profile变量)
- - 因为要使用证书,所以这里需要单独设置某些资源不过滤;
- - 注:不需要单独过滤,用第一个;需要单独过滤,用第二个。
<!-- 定义Profiles -->
<profiles>
<profile>
<id>dev</id>
<properties>
<runtime-profile>dev</runtime-profile>
</properties>
<activation>
<activeByDefault>true</activeByDefault> <!-- 默认激活 -->
</activation>
</profile>
<profile>
<id>pro</id>
<properties>
<runtime-profile>pro</runtime-profile>
</properties>
</profile>
</profiles>
<!-- maven打包插件 -->
<build>
<finalName>${project.artifactId}</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering> <!-- 开启过滤 -->
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<org.bjyc.frameworks.version>0.0.1-SNAPSHOT</org.bjyc.frameworks.version>
<!-- 防止二进制文件被意外过滤 -->
<maven.resources.nonFilteredFileExtensions>
p12,pfx,cer,keystore,jks
</maven.resources.nonFilteredFileExtensions>
</properties>
<!-- maven打包插件 -->
<build>
<finalName>${project.artifactId}</finalName>
<!-- 关键资源过滤配置 -->
<resources>
<!-- 处理需要过滤的文本资源 -->
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>application*.properties</include>
<include>application*.yml</include>
<include>bootstrap*.properties</include>
<include>bootstrap*.yml</include>
</includes>
</resource>
<!-- 单独处理证书文件 - 关闭过滤 -->
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering> <!-- 确保二进制无损 -->
<includes>
<include>wxcert/*.p12</include>
</includes>
</resource>
<!-- 处理其他非过滤资源 -->
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<excludes>
<exclude>wxcert/*.p12</exclude>
<exclude>application*.properties</exclude>
<exclude>application*.yml</exclude>
<exclude>bootstrap*.properties</exclude>
<exclude>bootstrap*.yml</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 激活 profile 配置 -->
<profiles>
<profile>${runtime-profile}</profile>
</profiles>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<!-- 添加资源过滤扩展配置 -->
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<!-- 防止二进制文件被过滤 -->
<nonFilteredFileExtensions>
<nonFilteredFileExtension>p12</nonFilteredFileExtension>
<nonFilteredFileExtension>cer</nonFilteredFileExtension>
<nonFilteredFileExtension>keystore</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
第二步:配置 YAML 文件
#application.yml
spring:
profiles:
active: '@runtime-profile@' # Maven 资源过滤将替换此占位符
#bootstrap.yml
spring:
profiles:
active: '@runtime-profile@' # 与 application.yml 保持一致
第三步:在 IDEA 中使用 Maven Profiles,勾选指定的文件,如:‘dev’或者‘pro’