`

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

阅读更多

原文地址: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 Profile是Maven的核心特性之一,它使得我们能够在单个项目中管理多环境的构建配置。...

    maven多环境配置打包

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

    maven多环境部署pom文件实例

    3. **构建生命周期阶段(Build Profiles)**:Maven的Profile功能允许为不同环境定义不同的配置。在POM文件中定义profile,每个profile包含特定环境的配置。例如: ```xml &lt;profile&gt; &lt;id&gt;dev ...

    Jenkins+Maven+SVN+Tomcat 持续集成环境快捷部署

    整个持续集成环境部署完成后,开发人员每提交一次代码更改,Jenkins就会自动运行预设的构建任务,完成代码的编译、打包、部署等一系列自动化流程,从而提高开发效率和软件质量。 需要注意的是,在实际操作中可能会...

    maven 一键打包

    此时,可以通过Maven的profile功能,定义不同环境的配置,并在打包时选择相应的profile。 ### Maven profile Profile是Maven中的一个概念,用于根据不同的环境条件启用或禁用一组设置。例如,你可以创建名为`dev`、...

    使用maven Filtering实现多环境构建

    在软件开发过程中,多环境构建是一项重要的任务...总之,Maven Filtering与Profile的结合使用,为Java开发者提供了一种强大且灵活的多环境构建解决方案,使得项目能在不同环境中无缝地运行,提高了开发效率和产品质量。

    maven构建项目可以粘贴的内容

    Profile是Maven的环境或配置切换机制,可以根据不同的环境条件(如开发、测试、生产)激活不同的配置。 七、Maven的生命周期和阶段 Maven的生命周期包括clean、default和site三个主要阶段,每个阶段包含一系列的...

    Maven在Windows下环境搭建

    Maven是Java开发中的一个项目管理工具,它帮助开发者构建、管理和部署项目,通过依赖管理和项目对象模型(Project Object Model, POM)来简化构建过程。本篇文章将详细讲解如何在Windows操作系统上搭建Maven环境。 ...

    maven的包 文件包文件包

    例如,可以创建不同的profile用于开发、测试和生产环境,每个profile可以有自己的依赖和构建设置。 10. Maven命令行接口: Maven提供了丰富的命令行选项,如`mvn clean`清理构建产物,`mvn compile`编译源代码,`...

    maven项目构建入门书籍

    4. **插件(Plugins)**: Maven通过插件执行构建任务,如编译、测试、打包、部署等。每个插件都有一个或多个目标(goals),可以在命令行或POM中指定执行。 5. **生命周期(Lifecycle)**: Maven有三个主要的生命...

    Java随手笔记8之包、环境变量和访问控制及maven profile实现多环境打包

    Java编程语言中的包(Package)是一种用于组织类和接口的方式,它能帮助开发者将...在pom.xml中配置profiles时,可以设置不同的、、等元素,以便根据不同的环境变量id激活相应的profile,从而实现多环境的打包和部署。

    包仓库—maven

    Maven,作为Java世界中的包仓库和构建工具,极大地简化了项目构建和管理的复杂性。它通过提供一套标准的项目对象模型(Project Object Model,POM)和自动化构建生命周期,使得开发者能够专注于代码本身,而非依赖库...

    阿里云maven私服jar包上传和拉取教程

    - 运行Maven生命周期的`deploy`阶段,IDEA将自动将项目构建后的jar包部署至私服仓库。 #### 四、从阿里云私服仓库拉取maven依赖的jar包 1. **配置Maven项目**: - 在项目的pom.xml文件中添加私服仓库的依赖坐标...

    Spring in Action 使用Maven 构建Spring 工程

    你可以为不同的环境(如开发、测试、生产)定义不同的配置,如数据库连接信息,然后在构建时选择合适的profile。这样,同一个项目可以轻松地适应多种环境,提高了部署的灵活性。 最后,我们来谈谈源码管理和版本...

    maven免安装绿色环境

    这种设计非常适合需要在不同计算机间切换或者在受限环境中工作的开发者,如在没有管理员权限的公司电脑上,或者在持续集成服务器上快速配置构建环境。 Maven的核心功能包括: 1. **项目对象模型(Project Object ...

    Mac的maven安装包apache-maven-3.6.3.zip

    在IT行业中,Maven是一个非常重要的工具,尤其对于...通过以上步骤,你可以在Mac上成功安装和配置Apache Maven 3.6.3,并能充分利用其功能进行Java项目的构建和管理。记得保持Maven的更新,以获取最新的特性和修复。

Global site tag (gtag.js) - Google Analytics