Maven根据不同的环境打包不同的配置

前言:

在开发过程中,我们的软件会面对不同的运行环境,比如开发环境、测试环境、生产环境,而我们的软件在不同的环境中,有的配置可能会不一样,比如数据源配置、日志文件配置等等。

那么就需要借助maven提供的profile功能,通过不同的环境激活不同的profile来实现“maven根据不同的运行环境,打包不同的配置文件”的目的。

一、原理

利用filter实现对资源文件(resouces)过滤

maven filter可利用指定的xxx.properties中对应的key=value对资源文件中的${key}进行替换,最终把你的资源文件中的username=${key}替换成username=value

利用profile来切换环境

maven profile可使用操作系统信息,jdk信息,文件是否存在,属性值等作为依据,来激活相应的profile,也可在编译阶段,通过mvn命令加参数 -PprofileId 来手工激活使用对应的profile 
结合filter和profile,我们就可以方便的在不同环境下使用不同的配置

二、pom配置

 <profiles>
    <profile>
      <id>cluster</id>
      <activation>
        <property>
          <name>node</name>
        </property>
      </activation>
      <build>
        <finalName>ota</finalName>
        <filters>
          <filter>${project.basedir}/src/cluster/nodes/${node}.properties</filter>
        </filters>
        <resources>
          <resource>
            <targetPath>${project.basedir}/target/${project.build.finalName}</targetPath>
            <filtering>true</filtering>
            <directory>${project.basedir}/src/main/sca-resources</directory>
            <includes>
              <include>META-INF/**/*.composite</include>
              <include>definitions.xml</include>
            </includes>
          </resource>
          <resource>
            <targetPath>${project.basedir}/target/${project.build.finalName}/WEB-INF/classes</targetPath>
            <filtering>true</filtering>
            <directory>${project.basedir}/src/main/resources</directory>
            <includes>
              <include>**/*.xml</include>
              <include>**/*.properties</include>
              <include>policy</include>
            </includes>
          </resource>
        </resources>
      </build>
    </profile>  

  </profiles> 
  • activation:在activation元素中指定激活条件
  • property:当maven检测到property(pom中如${name}这样的)profile将被激活   无论取任何值,都会触发

执行打包命令

手工编译,打包:maven clean package -Ptest      激活id="test"的profile

install 和 package命令的区别

1.install:打包好的 jar 包会安装到本地的 maven 仓库中,使用的配置是默认的配置,供其他项目使用。 
2.package 指定参数打包:clean package -Dmaven.test.skip=true -Pprod 这种方式就是指定了打包的参数,并且打包后的文件存放到项目的 target 目录下。

时间: 2024-10-10 22:25:44

Maven根据不同的环境打包不同的配置的相关文章

maven profile实现多环境打包

快速解决: 项目目录 1.pom文件中添加profile <profiles> <profile> <!-- 本地开发环境 --> <id>dev</id> <properties> <profiles.active>dev</profiles.active> </properties> <activation> <activeByDefault>true</activ

【转】maven profile实现多环境打包

作为一名程序员,在开发的过程中,经常需要面对不同的运行环境(开发环境.测试环境.生产环境.内网环境.外网环境等等),在不同的环境中,相关的配置一般不一样,比如数据源配置.日志文件配置.以及一些软件运行过程中的基本配置.每次在不同环境部署程序时,都需要修改相应的配置文件,使之完成环境的配置.这么做存在一个比较大的问题:每次修改配置非常麻烦,而且配置错误会产生不可预估的影响,比如,在发布生产环境时用的开发环境的配置还好,但如果在开发环境下用生产环境的数据,将会造成生产数据的污染,导致生产环境崩溃.

Maven 为不同的环境打包 -开发,测试,生产

每个项目都会有多套运行环境,最基本的就是Dev.QA.Prod,不同的环境对应的配置也不尽相同,比如说数据库连接,文件路径,WebServices address 等等. 不同环境下需要构建不同的包,那么我们可以通过以下两种方式来解决: 一.定义多个 pom,使用 -f <pom_file> 指定 e.g. pom.xml (default) pom_qa.xml pom_prod.xmlBuild war for qa: mvn clean package -f pom_qa.xmlBuil

Maven插件之portable-config-maven-plugin(不同环境打包)

大型项目中,分开发环境.测试环境.生产环境等; 不同环境,配置不同,或数据源,或服务器,或数据库等; 问题来了,如何使用Maven针对不同的环境来打包呢? Maven提供了Profile的概念,用来解决此类问题,其原理很简单,就是使用变量替换;举个例子来说明,测试项目目录结构如下图所示: 比如开发环境和生产环境的数据库不同,db.properties配置文件内容如下: [html] view plain copy #测试库 db.url=192.10.2.168 db.username=dbte

maven项目之Profile---不同环境打包不同配置

作为一名程序员,在开发的过程中,经常需要面对不同的运行环境(开发环境.测试环境.生产环境.内网环境.外网环境等等),在不同的环境中,相关的配置一般不一样,比如数据源配置.日志文件配置.以及一些软件运行过程中的基本配置.每次在不同环境部署程序时,都需要修改相应的配置文件,使之完成环境的配置.这么做存在一个比较大的问题:每次修改配置非常麻烦,而且配置错误会产生不可预估的影响,比如,在发布生产环境时用的开发环境的配置还好,但如果在开发环境下用生产环境的数据,将会造成生产数据的污染,导致生产环境崩溃.

Maven 结合 Spring profile对不同的部署环境打包部署

这是一个草鸡鸡冻人心的时刻,搞了2天终于搞定了,麻麻再也不用担心我部署出错了!!!!!!! 所有profile,spring和maven的,定义均要一致,否则,自己运行看看. 首先,先来讲下spring的profile功能,这个是方便项目的各种环境分离(开发.测试.生产),简单介绍下如何使用. 在beans中定义环境代码,项目中,我在beans.xml里定义 1 <beans profile="develop,test,product"></beans> 在数据

maven多环境打包配置

一.需求场景 1.开发环境和生产环境数据库地址和信息不同. 2.开发和生产日志等级不同 ... 二.最简单的实现方式 在 pom.xml 中配置 <!-- 设置不同环境打包 --> <profiles> <profile> <id>dev</id> <properties> <db.url>aa1</db.url> <db.username>bb1</db.username> <d

Maven 如何为不同的环境打包 —— 开发、测试和生产环境

在开发过程中,我们的软件会面对不同的运行环境,比如开发环境.测试环境.生产环境,而我们的软件在不同的环境中,有的配置可能会不一样,比如数据源配置.日志文件配置.以及一些软件运行过程中的基本配置,那每次我们将软件部署到不同的环境时,都需要修改相应的配置文件,这样来回修改,是个很麻烦的事情.有没有一种方法能够让我们不用修改配置就能发布到不同的环境中呢?当然有,这就是接下来要做的事. 当然,这里的前提是使用maven做为构建工具. 使用maven来实现多环境的构建可移植性,需要借助maven提供的pr

maven 分环境打包

一,创建分环境属性配置文件 src/build-config/build-develop.propertiessrc/build-config/build-product.propertiessrc/build-config/build-test.properties 例: build-develop.properties #数据库配置build.jdbc.url = jdbc:oracle:thin:@ip:port:databasebuild.jdbc.username = namebuil