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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 原文地址:http://melin.iteye.com/blog/1339060很早学习rails的时候,rails在服务器启动的时候,通过参数可以切换不同运行环境。

原文地址: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实例: 

  1. <beans profile="development">  
  2.    <bean id="dataSource-mysql" class="com.alibaba.druid.pool.DruidDataSource"    destroy-method="close">  
  3.        <property name="url">  
  4.            <value>jdbc:mysql://192.168.1.100/druid-test</value>  
  5.        </property>  
  6.        <property name="username">  
  7.            <value>admin</value>  
  8.        </property>  
  9.        <property name="password">  
  10.            <value>adminpassword</value>  
  11.        </property>  
  12.        <property name="initialSize">  
  13.            <value>1</value>  
  14.        </property>  
  15.        <property name="maxActive">  
  16.            <value>20</value>  
  17.        </property>  
  18.    </bean>  
  19. </beans>  
  20.   
  21.   
  22. <beans profile="production">  
  23.     <jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/datasource"/>  
  24. </beans>  



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

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

  1.      <resources>  
  2. <resource>  
  3.     <directory>src/main/resources</directory>  
  4.             <filtering>true</filtering>  
  5. </resource>  
  6.     </resources>  


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

  1. <profiles>  
  2.         <profile>    
  3.             <id>development</id>    
  4.             <activation>    
  5.                 <activeByDefault>true</activeByDefault>    
  6.             </activation>  
  7.             <properties>  
  8.                 <profiles.active>development</profiles.active>  
  9.             </properties>  
  10.         </profile>  
  11.         <profile>    
  12.             <id>test</id>    
  13.             <properties>  
  14.                 <profiles.active>test</profiles.active>  
  15.             </properties>  
  16.         </profile>  
  17.         <profile>    
  18.             <id>production</id>    
  19.             <properties>  
  20.                 <profiles.active>production</profiles.active>  
  21.             </properties>  
  22.         </profile>  
  23.     </profiles>  


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

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

  1. logback-development.xml  
  2. logback-production.xml  
  3. logback-test.xml  


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

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



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

  1. logback-development.xml  
  2. logback-production.xml  
  3. logback-test.xml  


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

  1. <configuration>  
  2.     <include resource="/META-INF/logback/logback-${profiles.active}.xml"/>  
  3. </configuration>  



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

    1. <context-param>  
    2.         <param-name>spring.profiles.active</param-name>  
    3.         <param-value>${profiles.active}</param-value>  
    4.     </context-param>  
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
4月前
|
Java Maven
解决idea每次新建maven项目都需要重新配置maven的问题
解决idea每次新建maven项目都需要重新配置maven的问题
191 1
|
21天前
|
XML Java 测试技术
从零开始学 Maven:简化 Java 项目的构建与管理
Maven 是一个由 Apache 软件基金会开发的项目管理和构建自动化工具。它主要用在 Java 项目中,但也可以用于其他类型的项目。
33 1
从零开始学 Maven:简化 Java 项目的构建与管理
|
1月前
|
Java Maven
maven项目的pom.xml文件常用标签使用介绍
第四届人文,智慧教育与服务管理国际学术会议(HWESM 2025) 2025 4th International Conference on Humanities, Wisdom Education and Service Management
112 8
|
1月前
|
Java 应用服务中间件 Maven
Maven的三种项目打包方式——pom,jar,war的区别
Maven 提供了多种打包方式,分别适用于不同类型的项目。pom 用于父项目或聚合项目,便于项目的结构和依赖管理;jar 用于Java类库或可执行的Java应用程序;war 则专用于Java Web应用程序的部署。理解这些打包方式的用途和特点,可以帮助开发者更好地配置和管理Maven项目,确保构建和部署过程的顺利进行。无论是单模块项目还是多模块项目,选择合适的打包方式对于项目的成功至关重要。
80 3
|
2月前
|
Java 关系型数据库 MySQL
Maven——创建 Spring Boot项目
Maven 是一个项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,简化了项目的构建和管理过程。其核心功能包括项目构建和依赖管理,支持创建、编译、测试、打包和发布项目。Maven 仓库分为本地仓库和远程仓库,远程仓库包括中央仓库、私服和其他公共库。此外,文档还介绍了如何创建第一个 SpringBoot 项目并实现简单的 HTTP 请求响应。
160 1
Maven——创建 Spring Boot项目
|
2月前
|
Java 关系型数据库 MySQL
如何使用 maven 创建一个 Spring Boot项目
Maven 是一个强大的项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,提高开发效率。其核心功能包括项目构建和依赖管理。项目构建支持编译、测试、打包和发布等流程,而依赖管理则通过中央仓库、本地仓库和私有服务器获取和管理项目依赖。示例中展示了如何创建第一个 SpringBoot 项目并实现简单接口。
45 1
如何使用 maven 创建一个 Spring Boot项目
|
2月前
|
Java Maven Kotlin
idea maven创建kotlin项目
本文介绍了在IntelliJ IDEA中使用Maven创建Kotlin项目的步骤,包括在`pom.xml`文件中添加Maven中央仓库、配置`kotlin-maven-plugin`插件、指定源目录、添加测试插件和执行插件,以及添加Kotlin测试依赖和标准库依赖。文中还提到了如何通过更换镜像或使用代理来解决依赖下载速度慢的问题,并展示了运行示例代码的截图。
123 4
idea maven创建kotlin项目
|
2月前
|
Java Maven Android开发
eclipse创建maven项目
本文介绍了在Eclipse中创建Maven项目的步骤,包括打开Eclipse、选择Java项目、完成项目创建以及自动下载插件的过程。
107 2
eclipse创建maven项目
|
2月前
|
缓存 IDE Java
idea的maven项目打包时没有source下的文件
【10月更文挑战第21天】idea的maven项目打包时没有source下的文件
82 1
|
2月前
|
Java API Apache
除了 Maven,还有哪些工具可以管理项目的依赖和版本冲突
除了Maven,常用的项目依赖管理和版本冲突解决工具有Gradle、Ivy、Ant+Ivy、SBT等。这些工具各有特点,适用于不同的开发环境和需求。
146 2