springboot maven profiles 打包不通环境java
在Spring Boot项目下的application.yml或application.properties中添加配置项mysql
application.ymlspring
spring: profiles: active: dev
application.propertiessql
spring.profiles.active: dev
spring.profiles.active: dev
表示默认加载的就是开发环境的配置,若是dev换成test,则会加载测试环境的属性,以此类推。数据库
建立不一样环境下的配置文件springboot
例如环境分为开发环境、测试环境和生产环境,建立以下文件:服务器
application-dev.yml
或 application-dev.properties
application-test.yml
或 application-test.properties
application-prod.yml
或 application-prod.properties
application.yml文件分为四部分,使用 --- 来做为分隔符,第一部分通用配置部分,表示三个环境都通用的属性,用spring.profiles指定了一个值(开发为dev,测试为test,生产为prod),这个值表示该段配置应该用在哪一个profile里面。app
例如, 咱们在某个项目中根据不一样的环境配置不一样的数据库信息:maven
开发环境spring-boot
spring: datasource: name: druidDataSource type: com.alibaba.druid.pool.DruidDataSource druid: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://192.168.1.2:3306/myDB?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&useSSL=false username: user1 password: 123456
测试环境
spring: datasource: name: druidDataSource type: com.alibaba.druid.pool.DruidDataSource druid: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://192.168.20.2:3306/myTestDB?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&useSSL=false username: user1 password: 123456
生产环境
spring: datasource: name: druidDataSource type: com.alibaba.druid.pool.DruidDataSource druid: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://172.1.16.2:3306/myProdDB?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&useSSL=false username: prod1 password: prod1234!@#
对应用进行打包操做后, 启动应用
若是是部署到服务器的话,咱们正常打成jar包,启动应用时Spring Boot经过application.yml或applcation.properties文件中的spring.profiles.active
配置项加载相关环境的配置信息。除此以外, 咱们能够经过 --spring.profiles.active=xxx
来控制加载哪一个环境的配置,参考命令以下:
# 表示使用开发环境的配置 java -jar xxx.jar --spring.profiles.active=dev # 表示使用测试环境的配置 java -jar xxx.jar --spring.profiles.active=test # 表示使用生产环境的配置 java -jar xxx.jar --spring.profiles.active=prod
添加扩展的配置文件信息
在复杂项目中,咱们有可能须要添加一些额外的扩展配置信息, Spring Boot支持项目添加扩展的配置文件, 假设咱们在某个功能模块hurricane-ldap
中配置须要进行LDAP认证的配置文件application-ldap.yml
,咱们能够在application.yml或application.properties文件中修改spring.profiles.active
配置项, 以下所示:
spring: profiles: active: dev,ldap
在pom.xml文件中添加多环境配置
<!-- Application Environment Setting --> <profiles> <profile> <id>dev</id> <activation> <!-- Default Active Without Assign Parameter --> <activeByDefault>true</activeByDefault> </activation> <properties> <profileActive>dev</profileActive> </properties> </profile> <profile> <id>test</id> <properties> <profileActive>test</profileActive> </properties> </profile> <profile> <id>prod</id> <properties> <profileActive>prod</profileActive> </properties> </profile> </profiles>
注: 配置文件中添加开发、测试和生产三个环境的配置, 其中应注意
profileActive
自定义配置项, 该配置项指明应用配置文件的名称, 此配置项将在application.yml或application.properties中应用。
修改applcation.yml或application.properties配置项
修改applcation.yml或application.properties配置项,替换spring.profies.active
配置项,以下所示:
spring: profiles: active: @profileActive@,ldap
注: @profileActive@
为上一步骤中pom.xml文件配置的自定义配置项, 该参数能够根据开发人员自身的习惯进行命名和配置。
使用maven命令打包成相应环境的应用程序包
mvn clean package -Pprod -U # 或者 mvn clean package -DprofileActive=prod -U
mvn clean package -Ptest -U # 或者 mvn clean package -DprofileActive=test -U
mvn clean package -Pdev -U # 或者 mvn clean package -DprofileActive=dev -U
其余的
<profiles> <!--开发环境--> <profile> <id>dev</id> <properties> <build.profile.id>dev</build.profile.id> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <!--测试环境--> <profile> <id>test</id> <properties> <build.profile.id>test</build.profile.id> </properties> </profile> <!--生产环境--> <profile> <id>prod</id> <properties> <build.profile.id>prod</build.profile.id> </properties> </profile> </profiles> <build> <finalName>${project.artifactId}</finalName> <resources> <resource> <directory>src/main/resources</directory> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources.${build.profile.id}</directory> <filtering>false</filtering> </resource> </resources> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <classifier>exec</classifier> </configuration> </plugin> </plugins> </build>