`
raymond.chen
  • 浏览: 1437315 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

用profile管理多个环境的配置信息

 
阅读更多

        一个软件项目在开发、测试和上线等不同生命周期里,相关的配置信息可能都不一样(比如数据库连接参数),如果用传统的手工方式来维护的话,会很繁杂而且容易出错。为了改变这种情况,可以使用Maven来构建项目,然后使用Maven的Profile和Filterring功能来解决。

 

Filtering是Maven Resources Plugin的一个功能,该功能会使用项目属性或者系统属性的值来替换资源文件中${...}符号的值。

 

比如在一个属性文件中有以下键值对:

        web.root.path=${web.root.path}

在pom.xml文件中配置了web.root.path这个属性项:

        <web.root.path>http://localhost:8080/cjmWeb/</web.root.path>

那么在Maven编译打包时,属性文件中的${web.root.path}会自动被替换为“http://localhost:8080/cjmWeb/”。

 

pom.xml中filtering相关配置如下:

<build>
  	<plugins>
  		<plugin>
			<groupId>org.apache.maven.plugins</groupId>  
            <artifactId>maven-war-plugin</artifactId> 
			<version>2.2</version> 
            <configuration>  
                <warName>${war.name}</warName>
                <webResources>  
                    <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>  
  	</plugins>
  	
  	<resources>
  		<resource>
  			<filtering>true</filtering>
			<directory>src/main/resources</directory>
  			<includes> 
				<include>**/*.properties</include> 
				<include>**/*.xml</include> 
			</includes>
  		</resource>
  	</resources>
</build>

     webResources > resource > filtering:值为true表示用项目属性或者系统属性来替换web资源文件中的${...}

     webResources > resource > directory:指定web资源文件目录,默认是src/main/webapp

     webResources > resource > includes:定义哪些web资源文件会被做替换处理。此处只对web.xml文件进行替换处理。

 

     resources > resource > filtering:值为true表示用项目属性或者系统属性来替换项目资源文件中的${...}

     resources > resource > directory:指定项目资源文件目录,默认为src/main/resources

     resources > resource > includes:定义哪些资源文件会被做替换处理。此处只对扩展名为properties和xml这两种资源文件进行替换处理。

 

application.properties文件内容:

 

web.root.path=${web.root.path}

 

beans.xml文件内容:

 

<?xml version="1.0" encoding="UTF-8"?>
<beans>
	<web_root_path value="${web.root.path}" />
</beans>

 

web.xml文件内容:

 

<web-app>
  	<context-param>  
        <param-name>spring.profiles.active</param-name>  
        <param-value>${profiles.activation}</param-value>  
	</context-param> 
</web-app>

 

pom.xml文件中profile相关配置如下:

 

<profiles>
  	<profile>
  		<id>development</id>
  		<activation>
  			<activeByDefault>true</activeByDefault>
  		</activation>
  		<properties>
  			<profiles.activation>development</profiles.activation>
  			<web.root.path>http://localhost:8080/cjmWeb/</web.root.path>
  		</properties>
  	</profile>
  	
  	<profile>
  		<id>product</id>
  		<activation>
  			<activeByDefault>false</activeByDefault>
  		</activation>
  		<properties>
  			<profiles.activation>product</profiles.activation>
  			<web.root.path>http://127.0.0.1/cjmWeb/</web.root.path>
  		</properties>
  	</profile>
</profiles>

     此处定义了两个Profile段。其中id为development的段用于开发环境,其默认是激活的,id为product的段用于生产环境。如果要编译出生产环境的发布包,可以用下面这个命令:

    mvn clean package -Pproduct    ,-P后面跟profile的id值,如果不指定-P,则会使用activeByDefault=true这个profile段。

 

     profile > properties:用于定义资源文件中可用的属性实际值

分享到:
评论

相关推荐

    maven profile多环境配置

    Maven Profile 多环境配置 Maven 是一个流行的项目管理工具,广泛应用于 JAVA 相关的项目中。为了实现多环境的构建可移植性,Maven 提供了 Profile 机制。通过不同的环境激活不同的 Profile,可以达到构建的可移植...

    使用maven profile指定配置文件打包适用多环境的方法

    使用Maven Profile指定配置文件打包适用多环境的方法主要包括以下几个步骤: 首先,在pom.xml文件中添加profile节点信息,以指定不同的环境 Profile,例如开发环境、测试环境、预演环境和生产环境等。每个Profile都...

    使用maven Profile实现多环境构建

    通过熟练掌握Maven Profile,我们可以轻松地在多个环境中部署和运行应用,确保每个环境都能得到正确的配置。 总结来说,Maven Profile是Maven的核心特性之一,它使得我们能够在单个项目中管理多环境的构建配置。...

    Spring @Profile注解实现多环境配置

    Spring @Profile 注解实现多环境配置 在软件开发中,多环境配置是非常常见的一种需求,例如...@Profile 注解提供了一种简单的方式来实现多环境配置,帮助我们更好地管理不同的环境配置,从而提高软件开发效率和质量。

    Spring Boot_配置文件-多环境配置

    Spring Boot提供了灵活的多环境配置方式来解决这个问题。 首先,Spring Boot默认使用`application.properties`或`application.yml`作为主配置文件,这两个文件位于项目的`src/main/resources`目录下。在这个文件中...

    LTM一个VS对应多个HTTPS站点的SSL Profile配置.docx

    总结,通过调整F5 LTM中的SSL Profile的"Server Name",并利用SNI技术,可以成功地在一个VS下挂载并管理多个HTTPS站点。这不仅提高了资源利用率,也简化了多站点的管理流程。然而,这种配置需要对F5 LTM的特性和SSL/...

    springboot通过@Profile注解配置不同环境

    在本案例中,我们将深入探讨如何使用`@Profile`注解以及结合Maven来实现多环境配置。 首先,`@Profile`注解用于标记一个类或方法,表示该类或方法只在指定的环境中生效。例如,我们可以为开发环境创建一个`...

    spring profile 多环境配置管理详解

    在多环境配置管理中,Spring Profile 提供了方便的方式来切换不同环境下的配置,确保每个环境的运行参数符合其特定需求。 **一、Spring Profile 的使用** 1. **配置文件定义** 在 `applicationContext.xml` 或者 ...

    SpringBoot中的Profile配置的使用示例源码

    - 在`application.properties`或`application.yml`中定义多个profile,如`application-dev.properties`和`application-prod.properties`,分别对应开发和生产环境。 - 使用`spring.profiles.active`属性激活...

    详解springboot + profile(不同环境读取不同配置)

    1. 多环境配置管理:Profile 机制可以用来管理多环境下的配置,从而满足不同环境下的需求。 2. 模块化配置管理:Profile 机制可以用来管理不同模块或服务的配置,从而满足不同模块或服务的需求。 3. 微服务架构配置...

    maven多环境配置打包

    Maven作为Java项目管理的重要工具,提供了强大的多环境配置打包功能,帮助开发者有效地管理和构建项目,确保代码在不同环境下能够正确运行。 【描述】: 这篇博客(虽然描述为空,但可以通过提供的链接进一步了解...

    springboot项目框架,多数据源配置,日志,maven多环境打包,集成redis

    在pom.xml文件中,我们可以定义多个profile,每个profile包含特定环境的配置参数。打包时,通过指定激活的profile,Maven会将相应的配置打包进应用,确保部署到正确的目标环境。 **集成Redis**是SpringBoot的一个...

    maven利用Profile构建不同环境的部署包

    Profile是Maven中的一个配置单元,它允许我们在一个项目中定义多个可选的构建配置。每个Profile包含一组特定的构建指令,如插件配置、依赖关系或资源设置。当我们激活某个Profile时,Maven会合并该Profile的配置到...

    spring加载多个配置文件

    总结来说,Spring支持灵活地加载多个配置文件,无论是XML、Java配置还是基于注解的配置,都能满足项目对不同模块和环境的配置需求。通过理解并熟练运用这些加载机制,开发者可以更好地组织和管理项目中的配置,提高...

    【SpringBoot】多环境配置.doc

    - 使用Maven或Gradle的Profile功能,结合SpringBoot的多环境配置,便于管理和构建不同环境的应用。 - 使用配置管理工具,如Spring Cloud Config,实现集中式配置管理,提高可扩展性和可维护性。 总之,SpringBoot...

    springboot实现properties实现多环境配置1

    - 使用配置管理工具(如Spring Cloud Config Server)进行集中式管理,方便在多个环境中统一配置。 - 对于复杂的配置,可以考虑使用YAML(`.yml`)格式,它支持嵌套和更丰富的数据结构。 总之,Spring Boot通过...

    Profwiz转移用户配置文件工具Domain Migration User Profile tools 3.6

    2. **批量操作**:对于大型组织,Profwiz3.6支持批量迁移,可以一次性处理多个用户的配置文件,显著节省时间。 3. **安全可靠**:在迁移过程中,Profwiz3.6会保持数据完整性,避免信息丢失或损坏。同时,它还能在...

    idea下test自动测试profiles配置

    每个profile可以包含自己的插件配置、依赖和属性,使得在不同的环境中能够灵活地切换配置。 在Idea中配置Maven的profiles,我们需要遵循以下步骤: 1. **打开Maven配置**:进入Idea的设置或首选项(取决于你的操作...

    websphere 7 profile manager

    Profile Manager使得管理员能够集中控制和管理多个独立的Profile,从而简化了大型分布式环境下的服务器配置和管理。 **Profile Manager的功能与操作** 1. **创建Profile**:Profile Manager允许用户根据预定义的...

    linux 环境变量 配置 实用技巧 配置Linux 操作系统 环境变量

    - **重复定义变量**:如果同一个环境变量被多次定义,那么系统将以最后一次定义的值为准。例如,如果 PATH 变量被多次定义,则后定义的值会覆盖前面的定义。 #### 六、特殊字符及其意义 - **:**(冒号)用于分隔...

Global site tag (gtag.js) - Google Analytics