原文地址:http://www.cnblogs.com/yjmyzz/p/3941043.html 本文是其中一部分
项目开发好以后,通常要在多个环境部署,象我们公司多达5种环境:本机环境(local)、(开发小组内自测的)开发环境(dev)、(提供给测试团队的)测试环境(test)、预发布环境(pre)、正式生产环境(prod),每种环境都有各自的配置参数,比如:数据库连接、远程调用的ws地址等等。如果每个环境build前手动修改这些参数,显然太不fashion.
maven早就考虑到了这些问题,看下面的pom片段:
<profiles> <profile> <!-- 本地环境 --> <id>local</id> <properties> <db-url>jdbc:oracle:thin:@localhost:1521:XE</db-url> <db-username>***</db-username> <db-password>***</db-password> </properties> </profile> <profile> <!-- 开发环境 --> <id>dev</id> <properties> <db-url>jdbc:oracle:thin:@172.21.129.51:1521:orcl</db-url> <db-username>***</db-username> <db-password>***</db-password> </properties> <!-- 默认激活本环境 --> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> ... </profiles>
profiles节点中,定义了二种环境:local、dev(默认激活dev环境),可以在各自的环境中添加需要的property值,接下来修改build节点,参考下面的示例:
<build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.5.1</version> <configuration> <source>1.6</source> <target>1.6</target> <encoding>utf-8</encoding> </configuration> </plugin> </plugins> </build>
resource节点是关键,它表明了哪个目录下的配置文件(不管是xml配置文件,还是properties属性文件),需要根据profile环境来替换属性值。通常配置文件放在resources目录下,build时该目录下的文件都自动会copy到class目录下
其中spring-database.xml的内容为:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> <property name="url" value="${db-url}" /> <property name="username" value="${db-username}" /> <property name="password" value="${db-password}" /> </bean> </beans>
各属性节点的值,用占位符"${属性名}"占位,maven在package时,会根据profile的环境自动替换这些占位符为实际属性值。
默认情况下:
maven package
将采用默认激活的profile环境来打包,也可以手动指定环境,比如:
maven package -P dev
将自动打包成dev环境的部署包(注:参数P为大写)
这些各属性节点的值,还可以通过spring Bean的配置,将值付到Java代码中,附件中给一个例子
相关推荐
通过熟练掌握Maven Profile,我们可以轻松地在多个环境中部署和运行应用,确保每个环境都能得到正确的配置。 总结来说,Maven Profile是Maven的核心特性之一,它使得我们能够在单个项目中管理多环境的构建配置。...
Maven作为Java项目管理的重要工具,提供了强大的多环境配置打包功能,帮助开发者有效地管理和构建项目,确保代码在不同环境下能够正确运行。 【描述】: 这篇博客(虽然描述为空,但可以通过提供的链接进一步了解...
3. **构建生命周期阶段(Build Profiles)**:Maven的Profile功能允许为不同环境定义不同的配置。在POM文件中定义profile,每个profile包含特定环境的配置。例如: ```xml <profile> <id>dev ...
整个持续集成环境部署完成后,开发人员每提交一次代码更改,Jenkins就会自动运行预设的构建任务,完成代码的编译、打包、部署等一系列自动化流程,从而提高开发效率和软件质量。 需要注意的是,在实际操作中可能会...
此时,可以通过Maven的profile功能,定义不同环境的配置,并在打包时选择相应的profile。 ### Maven profile Profile是Maven中的一个概念,用于根据不同的环境条件启用或禁用一组设置。例如,你可以创建名为`dev`、...
在软件开发过程中,多环境构建是一项重要的任务...总之,Maven Filtering与Profile的结合使用,为Java开发者提供了一种强大且灵活的多环境构建解决方案,使得项目能在不同环境中无缝地运行,提高了开发效率和产品质量。
Profile是Maven的环境或配置切换机制,可以根据不同的环境条件(如开发、测试、生产)激活不同的配置。 七、Maven的生命周期和阶段 Maven的生命周期包括clean、default和site三个主要阶段,每个阶段包含一系列的...
Maven是Java开发中的一个项目管理工具,它帮助开发者构建、管理和部署项目,通过依赖管理和项目对象模型(Project Object Model, POM)来简化构建过程。本篇文章将详细讲解如何在Windows操作系统上搭建Maven环境。 ...
例如,可以创建不同的profile用于开发、测试和生产环境,每个profile可以有自己的依赖和构建设置。 10. Maven命令行接口: Maven提供了丰富的命令行选项,如`mvn clean`清理构建产物,`mvn compile`编译源代码,`...
4. **插件(Plugins)**: Maven通过插件执行构建任务,如编译、测试、打包、部署等。每个插件都有一个或多个目标(goals),可以在命令行或POM中指定执行。 5. **生命周期(Lifecycle)**: Maven有三个主要的生命...
通过使用Maven,开发者可以定义项目的结构、依赖关系和构建过程,只需编写一次配置,就能在不同的环境中一致地构建项目。其核心概念是项目对象模型(Project Object Model,POM),一个XML文件,描述了项目的基本...
Java编程语言中的包(Package)是一种用于组织类和接口的方式,它能帮助开发者将...在pom.xml中配置profiles时,可以设置不同的、、等元素,以便根据不同的环境变量id激活相应的profile,从而实现多环境的打包和部署。
Maven,作为Java世界中的包仓库和构建工具,极大地简化了项目构建和管理的复杂性。它通过提供一套标准的项目对象模型(Project Object Model,POM)和自动化构建生命周期,使得开发者能够专注于代码本身,而非依赖库...
- 运行Maven生命周期的`deploy`阶段,IDEA将自动将项目构建后的jar包部署至私服仓库。 #### 四、从阿里云私服仓库拉取maven依赖的jar包 1. **配置Maven项目**: - 在项目的pom.xml文件中添加私服仓库的依赖坐标...
你可以为不同的环境(如开发、测试、生产)定义不同的配置,如数据库连接信息,然后在构建时选择合适的profile。这样,同一个项目可以轻松地适应多种环境,提高了部署的灵活性。 最后,我们来谈谈源码管理和版本...
这种设计非常适合需要在不同计算机间切换或者在受限环境中工作的开发者,如在没有管理员权限的公司电脑上,或者在持续集成服务器上快速配置构建环境。 Maven的核心功能包括: 1. **项目对象模型(Project Object ...