编程语言 php java

Maven与Spring profile的结合使用

java HTML我帮您 1年前  0次浏览
在实际开发中,我们常常需要应对多类环境,针对不同的环境来更改相应的配置,比如常见开发环境、测试环境以及客户的实际部署环境。
spring3.1从开始就提供了profile功能,方便我们为不同的profile使用不同的bean。因此我们会遇到下面的场景,在开发环境中数据源的获取方式是直连数据库,部署环境中需要连接的是JNDI,如何避免项目打包完每次人工更改配置文件的繁琐工作呢?

通过引入Spring和Maven的profile特性来实现不同环境自动切换不同配置的功能。

声明Spring profile
1、 定义两个beans,分别对应两个环境下的数据源配置:在Spring的配置文件applicationContext.xml中定义两个profile的beans。

destroy-method="close">

jdbc:mysql://localhost:1433/jeeweb


admin


adminpassword


1


20











更改web.xml

那么根据Spring的profile特性,我们只要在web.xml文件中定义如下形式配置:


spring.profiles.active
${profiles.active}



就会启用相应的profile配置,Spring根据指定的配置来注入依赖。

为spring.profiles.active赋值

那么如何在打包时自动更改spring.profiles.active的值呢?这就需要Maven的profile特性。

我们将上述spring.profiles.active的param-value的值更改为{profiles.active},这是Maven的属性值替换的占位符,Maven的资源过滤插件(Maven Resources plugin)将会在构建期间替换该值,为了在打包时启用资源过滤,需要我们配置Maven打包插件(Maven war plugin):


org.apache.maven.plugins
maven-war-plugin
2.4

${project.artifactId}
激活spring profile


true
src/main/webapp

**/web.xml



src/main/webapp
src/main/webapp/WEB-INF/web.xml




启用Maven profile

最后在项目的pom.xml或m2文件夹下的setting.xml中指定Maven的profile:

 不同的打包环境 

开发环境,默认激活

development

development


部署环境

production

production


默认启用的是dev环境配置
true





根据上述配置,输入打包命令mvn clean package默认启用的是production,数据源由JNDI提供,如果需要激活另一个profile,只要更改打包命令为mvn clean package -P development。

发表评论