此处配置文件均以.properties文件为例,.yml配置文件写法有所区别。分环境配置文件命名可以写成两种格式:即src/main/resources下的application-dev.properties和src/main/resources/conf/dev下的application.properties。
方法一:配置文件为springboot-dev格式
配置文件中内容包括数据库端口暂略。
application.properties中添加语句spring.profiles.active=@XXX@ (@XXX@:其中XXX与pom.xml中< profile>< properties>< XXX>dev< XXX>< /properties>< /profile>和 < includes>< include>application-${XXX}.properties< /include>< include>application.properties< /include> < /includes>需保持一致,下方pom.xml文件已标出)。
pom.xml文件(只粘贴与配置文件有关的部分):
①:打包多个配置环境(包括active和非active):
<profiles>
<profile>
<id>dev</id>
<properties>
<XXX>dev</XXX>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>prepare</id>
<properties>
<XXX>prepare</XXX>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<XXX>test</XXX>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
<profile>
<id>prod</id>
<properties>
<XXX>prod</XXX>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
</profiles>
<build>
<resources>
<!--加载多环境配置-->
<resource>
<filtering>true</filtering>
<directory>src/main/resources</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
</plugins>
</build>
此时,完成多环境配置且打包时出现active和非active所有配置文件;
②:打包一个配置环境(只包括active):
<profiles>
<profile>
<id>dev</id>
<properties>
<XXX>dev</XXX>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>prepare</id>
<properties>
<XXX>prepare</XXX>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<XXX>test</XXX>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
<profile>
<id>prod</id>
<properties>
<XXX>prod</XXX>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
</profiles>
<build>
<resources>
<!--加载多环境配置-->
<resource>
<filtering>true</filtering>
<directory>src/main/resources</directory>
<excludes>
<exclude>application-dev.properties</exclude>
<exclude>application-prepare.properties</exclude>
<exclude>application-test.properties</exclude>
<exclude>application-prod.properties</exclude>
<exclude>application.properties</exclude>
</excludes>
</resource>
<resource>
<filtering>true</filtering>
<directory>src/main/resources</directory>
<includes>
<include>application-${XXX}.properties</include>
<include>application.properties</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
</plugins>
</build>
与①相比,②主要通过 < excludes >< /excludes >先行找到所有配置文件,之后通过< include>< /include>添加需要的配置文件即可做到只打包想要的配置文件,非active则会同时被不打包;
方法二:配置文件为dev文件夹下的application.properties格式:
此时,src/main/properties下的application.properties语句不变:spring.profiles.active=@XXX@,其与 < properties> < XXX>prod< /XXX>
< buildFinal>工程名< /buildFinal>< /properties>和< directory>src/main/resources/conf/${XXX}< /directory>相同。具体位置下方pom.xml文件已标出。
pom.xml对应的语句如下所示:
<profiles>
<profile>
<id>dev</id>
<properties>
<XXX>dev</XXX>
<buildFinal>工程名</buildFinal>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<XXX>test</XXX>
<buildFinal>工程名</buildFinal>
</properties>
</profile>
<profile>
<id>prepare</id>
<properties>
<XXX>prepare</XXX>
<buildFinal>工程名</buildFinal>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<XXX>prod</XXX>
<buildFinal>工程名</buildFinal>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
</profiles>
<build>
<finalName>工程名</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<excludes>
<exclude>application*.properties</exclude>
<exclude>conf/dev/*</exclude>
<exclude>conf/test/*</exclude>
<exclude>conf/prepare/*</exclude>
<exclude>conf/prod/*</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources/conf/${XXX}</directory>
<filtering>true</filtering>
<includes>
<include>application.properties</include>
<include>conf/${XXX}/*</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version><!--$NO-MVN-MAN-VER$ -->
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>utf-8</encoding>
</configuration>
</plugin>
<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>
<version>2.18.1</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>