大家好,欢迎来到IT知识分享网。
1.本篇前言
在实际开发过程中,可能需要不断进行环境的切换和打包部署,通常我们会选择在 application.yml 中修改不同环境对应的配置文件,这种方式不仅效率低,而且很容易发生错误,造成不必要的麻烦降低工作效率。maven提供了多环境配置,可以方便实现不同环境的配置切换和打包
2. 项目实战
2.1 准备配置文件
通常我们在开发过程中分为开发,测试,生产环境,当然在某些公司还有更多比如预发布等环境。我们这里就以开发,测试,生产三个为例。
准备四个配置文件,分别是application.yml、application-dev.yml、application-test.yml、application-prod.yml。
application.yml作为主配置文件,里面定义了需要激活的环境,如下:
spring:
application:
name: springboot-multiple-env
profiles:
active: @profile.active@
IT知识分享网
application-dev.yml、application-test.yml、application-prod.yml分为对应开发,测试,生产三个环境配置。我们这里以不同环境的server.port端口不同为例,在示例开发中不同环境的数据库等配置都可以如此配置。
application-dev.yml
IT知识分享网server:
port: 8080
application-test.yml
server:
port: 8081
application-prod.yml
IT知识分享网server:
port: 8082
##2.2 POM文件配置
maven中提供了profile的支持,每个profile能够定义自己的一些依赖和配置和激活条件,profile配置如下:
<!--定义三种开发环境-->
<profiles>
<profile>
<!--不同环境的唯一id-->
<id>dev</id>
<activation>
<!--默认激活开发环境-->
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profile.active>dev</profile.active>
</properties>
</profile>
<!--测试环境-->
<profile>
<id>test</id>
<properties>
<profile.active>test</profile.active>
</properties>
</profile>
<!--生产环境-->
<profile>
<id>prod</id>
<properties>
<profile.active>prod</profile.active>
</properties>
</profile>
</profiles>
<build>
<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>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<delimiters>
<delimiter>@</delimiter>
</delimiters>
<useDefaultDelimiters>false</useDefaultDelimiters>
</configuration>
</plugin>
</plugins>
</build>
2.3 测试结果
如果是Idea开发,可以在此进行环境切换
通过切换环境,我们启动项目可以看到端口已经改变。
2.4 多环境maven打包
使用maven命令打包(推荐使用),配合shell脚本可实现自动部署。
mvn clean package -Dmaven.test.skip=true -P dev
mvn clean package -Dmaven.test.skip=true -P test
mvn clean package -Dmaven.test.skip=true -P prod
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/6897.html