zl程序教程

您现在的位置是:首页 >  后端

当前栏目

借助Maven为项目划分development,test,production环境

Maven项目 环境 test 借助 划分 development production
2023-09-27 14:26:37 时间

原文地址:http://melin.iteye.com/blog/1339060

很早学习rails的时候,rails在服务器启动的时候,通过参数可以切换不同运行环境。也许spring从rails吸取了这样的功能,从spring3.1就提供了profile功能,方便我们为不同的profile使用不同的bean。能够想到的应用场景就是数据源的配置,在production profile中,可能通过jndi获取数据源,而在开发环境中配置jndi比较费事,使用durid配置数据源,项目发布的时候需要修改数据源的配置,比较麻烦,如果忘记修改就更惨了。 为了解决这样相关的问题,这里使用maven profile和maven resource plugin为项目提供profile功能。 

spring profile实例: 

beans profile="development"        bean id="dataSource-mysql"     destroy-method="close"            property name="url"                value jdbc:mysql://192.168.1.100/druid-test /value            /property            property name="username"                value admin /value            /property            property name="password"                value adminpassword /value            /property            property name="initialSize"                value 1 /value            /property            property name="maxActive"                value 20 /value            /property        /bean    /beans    beans profile="production"         jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/datasource"/    /beans   



这里我主要解决项目中三个应用场景: 
1:资源文件配置,每个环境下的属性值可能不同 
2:日志文件配置,开发环境下日志只需要在控制台显示,而production profile中是需要打到日志文件中。 
3:使用maven切换spring profile。 

完成上述功能,最主要是在pom.xml文件中添加如下一段配置: 

      resources    resource         directory src/main/resources /directory                 filtering true /filtering    /resource         /resources   


这样maven搜索src/main/resources下的所有文件,替换有类似这样变量${profiles.active}的值,其中profiles.active中的值是配置pom.xml文件,如下: 

profiles             profile                   id development /id                   activation                       activeByDefault true /activeByDefault                   /activation                 properties                     profiles.active development /profiles.active                 /properties             /profile             profile                   id test /id                   properties                     profiles.active test /profiles.active                 /properties             /profile             profile                   id production /id                   properties                     profiles.active production /profiles.active                 /properties             /profile         /profiles   


上面配置三种profile,默认激活development profile。 

为了解决资源文件的问题,我们提供三个资源文件,命名如下。logback-和.xml中间的值为profiles.active的值。 

logback-development.xml   logback-production.xml   logback-test.xml  


spring property-placeholder引用资源文件的方式如下。 

context:property-placeholder location="classpath:/META-INF/res/resource-${profiles.active}.properties" /   



为了解决日志文件的问题,这里使用了logback,和资源文件一样提供四个配置文件。 

logback-development.xml   logback-production.xml   logback-test.xml  


在classpath下添加logback.xml。logback默认加载classpath下的logback.xml文件,配置内容如下: 

configuration         include resource="/META-INF/logback/logback-${profiles.active}.xml"/    /configuration   



激活spring profile,只要在web.xml中添加如下配置: 

context-param             param-name spring.profiles.active /param-name             param-value ${profiles.active} /param-value         /context-param  
一文搞懂Java项目工程管理神器——Maven 在日常的Java项目开发当中,构建一个通用、合理、统一的项目工程框架,一直是很多程序员头疼的事情。 要解决这个问题,我们就不得不提到Maven这个Java工具了。 本文会详细分享Maven,并在文章内分享代码实例。
Mybatis学习(一):Maven工程部署Mybatis项目 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程,换句话说就是补了JDBC的坑,让操作数据库变得更方便。