3.Maven 根据开发,测试,生产环境一键打包动态切换 所有微服务
解决的问题:各种环境配置如数据库,redis在各种开发,测试,生产环境的 参数并不相同,当打包时,需要动态切换,从而改变Spring 注解引入的参数
<build>
<finalName>face-10001</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>env/dev/*</exclude>
<exclude>env/test/*</exclude>
<exclude>env/pro/*</exclude>
</excludes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources/env/${env}</directory>
<includes>
<include>*.*</include>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--这里写上main方法所在类的路径-->
<configuration>
<mainClass>com.findplus.face.FaceApp</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<outputDirectory>
C:\Users\13528\Desktop\package
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<exclude>表示除了这些文件,其余的都是配置文件,这些配置文件 不会 被打包到 classes 中去.
<include> 表示这些文件是配置文件,<filtering>为true,这些配置文件 会被 打包到 classes ,这两组标签 先后的 写法 ,作用是: 先整体排除掉env里所有的文件, 在局部添加 本次 mvn package 指明的 dev 或 test 或 pro ,这样,打包过去的就只有某一种环境的配置文件.
目录结构如下:

<profiles>
<profile>
<!-- 开发环境 -->
<id>dev</id>
<properties>
<env>dev</env>
</properties>
<activation>
<!-- 设置默认激活这个配置 -->
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<!-- 测试环境 -->
<id>test</id>
<properties>
<env>test</env>
</properties>
</profile>
<profile>
<!-- 发布环境 -->
<id>pro</id>
<properties>
<env>pro</env>
</properties>
</profile>
</profiles>
这样,我们可以通过 该注解 在启动类 指定配置文件 ,可以根据 /dev/test/pro 不同环境动态获取参数了
@PropertySource("classpath:config.properties")
public class FaceApp {
public static void main(String[] args) {
SpringApplication.run(FaceApp.class, args);
}
}
这些配置存在于父pom 中,所有子module 都继承该父pom
<profiles>
<profile>
<!-- 开发环境 -->
<id>dev</id>
<properties>
<env>dev</env>
</properties>
<activation>
<!-- 设置默认激活这个配置 -->
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<!-- 测试环境 -->
<id>test</id>
<properties>
<env>test</env>
</properties>
</profile>
<profile>
<!-- 发布环境 -->
<id>pro</id>
<properties>
<env>pro</env>
</properties>
</profile>
</profiles>
感谢阅读博客,欢迎向博主讨论问题。
浙公网安备 33010602011771号