spring.profiles.active 可以指定不同的开发环境, 指定不同的application-dev,application-prod等等的不同环境的文件,但是无法只能特定的文件夹下的一堆文件,所以我们这里使用maven里面的profiles和resources标签进行联合处理,使得我们在启动项目的时候,通过 在可以设置不同的环境
后面发现.这种不太合适, 打出包了,但是application.yaml文件里面的${environment}没有给值的话.默认会是使用8080端口,所以 不太实用, 应该的作用就是分环境打包 ,打包的时候加入-P dev 进行不同环境的打包 , 所以应该去掉application.yaml
作用参考如下文档:https://www.cnblogs.com/daixianjun/p/maven-package.html
项目结构如下:

application.yaml文件
spring:
profiles:
active: ${environment}
application-dev.yaml
server:
port: 8080
application-test.yaml
server:
port: 8081
pom配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.mashibing</groupId>
<artifactId>study</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>study</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<profiles>
<profile>
<id>test</id>
<properties>
<environment>test</environment>
</properties>
<!--如果没有配置启动参数, 默认使用test -->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>dev</id>
<properties>
<environment>dev</environment>
</properties>
</profile>
</profiles>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources/</directory>
<!-- 启用过滤 即该资源中的变量将会被过滤器中的值替换 这里就会替换application.yaml掉${environment} 为启动参数配置的字符 -->
<filtering>true</filtering>
<!--不处理这些文件 -->
<excludes>
<exclude>dev/**</exclude>
<exclude>test/**</exclude>
</excludes>
</resource>
<!--加入特定环境下的配置文件 跟上面profiles联合一起使用 -->
<resource>
<directory>src/main/resources/${environment}</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
进行maven打包的命令如下:

mvn package -P test 指定test目录下的环境配置文件
总的来说作用就是打包的时候 ,需要进行配置,才能得到对应环境的项目配置
最终打成jar的配置目录如下:

说明 最终是只留下一份配置文件, 所以打包的时候必须进行配置
1488

被折叠的 条评论
为什么被折叠?



