文档章节

Maven profile整合Spring profile

ZhakyMing
 ZhakyMing
发布于 2016/10/10 11:40
字数 715
阅读 167
收藏 1

在Maven的pom.xml和spring框架中,都有profile这个概念。profile是用于区分各种环境的,例如开发环境、测试环境、正式环境等。

Maven的profile经常用于在打包时根据指定环境打入不同的配置文件配置,如数据库配置。

Spring的Profile可以用于在不同的环境下加载不同的bean,例如@Profile注解。

下面介绍二者整合的一些步骤。

一、Spring启用一个profile

spring为beans标签提供了profile功能,以便项目的开发和生成环境分离。

在beans中定义环境代码

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd"

profile="dev,pro,test">

 

二、Spring启用某个profile

Spring启用某个profile有多种方式,为了便于整合Maven,这里通过web.xml方式启用:

 

<context-param>

<param-name>spring.profiles.active</param-name>

<param-value>dev</param-value>

</context-param>

 

在默认情况下,会启用Spring的dev profile,即开发环境。

PS

1、一和二还不清楚是不是都要做,还是二选一,我暂时是都做了;

2、二的配置下面会改为动态获取;

 

三、Maven profile配置

在pom.xml中,可以配置test和pro、dev三个profile,分别对应测试环境和正式环境和开发环境。这里也可以根据具体情况自定义。

 

<profiles>

<profile>

<!-- 本地开发环境 -->

<id>dev</id>

<properties>

<profiles.active>dev</profiles.active>

</properties>

<activation>

<activeByDefault>true</activeByDefault>

</activation>

</profile>

<profile>

<!-- 测试环境 -->

<id>test</id>

<properties>

<profiles.active>test</profiles.active>

</properties>

</profile>

<profile>

<!-- 生产环境 -->

<id>pro</id>

<properties>

<profiles.active>pro</profiles.active>

</properties>

</profile>

</profiles>

 

此时,运行mvn clean package -Ptest就会使用id为test的profile内的配置打包,mvn clean package -Ppro就是用来打正式环境包的命令。

profiles.active属性很关键,下面会用到。

 

四、web.xml内容替换

在web.xml中<param-value>dev</param-value>是指定Spring的profile,接下里要实现这个内容的替换,让mvn clean package -Ptest打包出来的web.xml变成<param-value>test</param-value>。

 

<context-param>          <param-name>spring.profiles.active</param-name>          <param-value>dev</param-value>   </context-param>

改为:

<context-param>

<param-name>spring.profiles.active</param-name>

<param-value>${profiles.active}</param-value>

</context-param>

 

 

五、更改pom.xml

现在一般项目都使用maven来管理,maven也有profile,可以将它们结合起来。

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-war-plugin</artifactId>

<version>2.0.2</version>

<configuration>

<warName>app</warName>

<webResources>

<!-- 激活spring profile -->

<resource>

<filtering>true</filtering>

<directory>src/main/webapp</directory>

<includes>

<include>**/web.xml</include>

</includes>

</resource>

</webResources>

<warSourceDirectory>src/main/webapp</warSourceDirectory>

<webXml>src/main/webapp/WEB-INF/web.xml</webXml>

</configuration>

</plugin>

 

mvn install -Ppro 就是发布生产版本。

注意一个参数<filtering>true</filtering>,一定要设置成true这样才会用对应environment目录下的配置文件覆盖原来的。

 

六、然后我们需要在项目里面src resource里面的某个配置文件添加如:

profile.active=${profile.active}

 

如上,打包部署到不同环境时,定义不同的run configurations即可,run的时候选择对应选项就好。

 

© 著作权归作者所有

ZhakyMing
粉丝 12
博文 89
码字总数 68764
作品 0
朝阳
后端工程师
私信 提问
spring boot + maven使用profiles进行环境隔离

Spring Profile Spring可使用Profile决定程序在不同环境下执行情况,包含配置、加载Bean、依赖等。 Spring的Profile一般项目包含:dev(开发), test(单元测试), qa(集成测试), prod(生产环境)...

流浪的猪猪
2018/11/16
0
0
maven 整合 spring profiles功能

spring为beans标签提供了profile功能,以便项目的开发和生成环境分离。 <beans xmlns="http://www.springframework.org/schema/beans" </beans> 以数据库为例,开发环境使用的是直接将配置写......

yybear
2013/03/14
0
0
Guns 2.0 基于 SpringBoot 全面升级,做简洁的管理系统

Guns V2.0 新版Guns基于SpringBoot全面升级,完美整合springmvc + shiro + mybatis-plus + beetl! 在不用写xml配置(V1.0)的基础上进一步简化项目配置,让您更专注于业务开发!抛弃传统spring xm...

stylefeng
2017/05/26
7.3K
14
详解Spring中的Profile

前言 由于在项目中使用Maven打包部署的时候,经常由于配置参数过多(比如Nginx服务器的信息、ZooKeeper的信息、数据库连接、Redis服务器地址等),导致实际现网的配置参数与测试服务器参数混淆...

watermelon11
2018/12/15
0
0
springboot maven 多环境配置 jenking构建发布配置

在后端开发中,应用程序在不同的环境可能会有不同的配置,例如数据库连接、日志级别等,开发,测试,生产每个环境可能配置都不一致。 使用Spring Boot的Profile可以实现多场景下的配置切换,方...

Elson
2018/09/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Oracle SQL语法实例合集

如需转载请注明出处https://my.oschina.net/feistel/blog/3052024 目的:迅速激活Oracle SQL 参考:《Oracle从入门到精通》 ------------------------------------------------------------......

LoSingSang
今天
2
0
增加 PostgreSQL 服务进程的最大打开文件数

https://serverfault.com/questions/628610/increasing-nproc-for-processes-launched-by-systemd-on-centos-7 要在systemd的配置里加才行...

helloclia
今天
2
0
组合模式在商品分类列表中的应用

在所有的树形结构中最适合的设计模式就是组合模式,我们看看常用商品分类中如何使用。 先定义一个树形结构的商品接口 public interface TreeProduct { List<TreeProduct> allProducts(...

算法之名
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部