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

新建maven项目,   在pom.xml中添加 profile节点信息如下:

<profiles>
        <profile>
            <!-- 开发环境 -->
            <id>dev</id>
            <properties>
                <environment>development</environment><!-- 节点名字environment是自己随意取的 -->
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault><!-- 默认激活该profile节点-->
            </activation>
        </profile>

        <profile>
            <!-- 测试环境 -->
            <id>test</id>
            <properties>
                <environment>test</environment>
            </properties>
        </profile>
        <profile>
            <!-- 生产环境 -->
            <id>prod</id>
            <properties>
                <environment>production</environment>
            </properties>
        </profile>

    </profiles>

二、在项目中添加各环境需要的各种配置文件,分不同目录存放, 分别是开发,测试, 生产 环境. 如下图左边部分所示

三、配置resource信息用来排除不需要的配置文件

 1 <resources>
 2             <resource>
 3                 <directory>src/main/resources</directory>
 4                 <excludes>
 5                     <exclude>development/*</exclude>
 6                     <exclude>test/*</exclude>
 7                     <exclude>production/**</exclude>
 8                 </excludes>
 9             </resource>
10             <resource>
11                 <directory>src/main/resources/${environment}</directory>
12                 <targetPath>${environment}</targetPath>
13             </resource>
14         </resources>

<directory>src/main/resources</directory>

<!--打包时包含src/main/resources目录下所有"子"文件 和 "孙"文件.如config 和environment -->

<exclude>development/**</exclude>

<!--打包时排除src/main/resources/development下所有"子"文件 和 "孙"文件.-->

<exclude>test/**</exclude>

<!--打包时排除src/main/resources/test下所有"子"文件 和 "孙"文件.-->


<exclude>production/**</exclude>

<!--打包时排除src/main/resources/production下所有"子"文件 和 "孙"文件.-->


<!-- 注意点: 如果写一个心号*, 如<exclude>development/*</exclude> 则表示:打包时排除src/main/resources/development下所有"子"文件, 不排除"孙"文件 -->
<!-- 以上配置优先度从上到下 递增, 这就达到目的: config目录下的配置各环境都需要, 而其它环境相关的配置只会有一个目录被打包--->

<directory>src/main/resources/${environment}</directory>

<!-- 打包时包含src/main/resources/${environment}下所有"子"文件,environment变量值来自profile中赋值 -->

<targetPath>${environment}</targetPath>

<!--指定src/main/resources/${environment}所有"子文件" 打包 到包的哪个目录 -->

四、项目打包.

打包命令mvn package -Pdev来指定激活id为 dev 的profile节点, 这样, 开发环境配置文件就会被打包.
开发: mvn package -Pdev (因为配置了默认激活dev部分, 所以也可以使用mvn package, 这与 mvn package -Pdev 效果相同)
测试: mvn package -Ptest
预演:mvn package -Pprev
生产:mvn package -Pprod

原文地址:https://www.cnblogs.com/hollowcabbage/p/9021647.html

时间: 2024-10-11 16:34:27

使用maven profile指定配置文件打包适用多环境的相关文章

【转】Maven项目中将配置文件打包到jar包中

参考博客:http://blog.csdn.net/ciedecem/article/details/10382275 问题: 项目中需要用到从文件中加载json数据,如图放在conf目录下. 程序中用 XXX.class.getResource("app.json"); XXX.class.getClassLoader().getResourceAsStream("app.json") 都找不到该文件,报NullPointerException.类加载器只能加载c

maven profile动态选择配置文件

一.背景 在开发过程中,我们的软件会面对不同的运行环境,比如开发环境.测试环境.生产环境,而我们的软件在不同的环境中,有的配置可能会不一样,比如数据源配置.日志文件配置.以及一些软件运行过程中的基本配置,那每次我们将软件部署到不同的环境时,都需要修改相应的配置文件,这样来回修改,很容易出错,而且浪费劳动力. maven提供了一种方便的解决这种问题的方案,就是profile功能. 二.profile简介 profile可以让我们定义一系列的配置信息,然后指定其激活条件.这样我们就可以定义多个pro

maven profile实现多环境打包

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

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

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

项目实现不同环境不同配置文件-maven profile

最近接触的项目都是在很多地方都落地的项目,需要支持不同的环境使用不同的配置文件.一直以来都以为是人工的去写不同的配置文件,手动的去修改运用的配置文件.感觉自己还是太low呀.maven的使用的还停留在基础上.后面看项目才发现maven可以不同环境不同的发布,只需要制定环境参数或者设置就可以,整个工程简单粗暴.觉的非常不错,于是想深入的了解一下.写下此文. 一.maven profile介绍 profile可以让我们定义一系列的配置信息,然后指定其在相应的环境下使用相应的配置文件.这样我们就可以根

maven profile

使用 Maven Profile 和 Filtering 打各种环境的包 每个项目都会有多套运行环境(开发,测试,正式等等),不同的环境配置也不尽相同(如jdbc.url),借助Jenkins和自动部署提供的便利,我们可以把不同环境的配置文件单独抽离出来,打完包后用对应环境的配置文件替换打包后的文件,其实maven已经给我们提供了替换方案:profile + filtering Filtering Filtering 是 maven 的 resource 插件 提供的功能,作用是用环境变量.po

maven 根据P参数值打包动态修改properties文件中值或一定properties

由于本人 最近忙着公司事情,昨天没有写博客,今天就继续写吧 需求:由于最近开发clover项目 ,没有使用spring,更没有使用任何框架,而使用J2EE的web工程,所以连接ZK和MongoDB.Redis等服务器需用指定properties文件, 而目前公司又分各套环境(dev.test.product),所以希望打包的时候 根据profile id 来动态使用不同环境properties文件 或者动态修改properties参数值 方法一:使用一套properties配置文件,但具体参数使

maven profile实现多环境配置

每次项目部署上线都需要手动去修改配置文件(比如数据库配置,或者一个自定义的配置)然后才能打包,很麻烦,网上找到 maven profile可以完成这个工作,记录如下: 环境:eclipse + spring mvc + maven 1.直接看图,把数据库的配置单独拿出来放在了resources_env目录下,三个不同环境参数不同, 2,在pom文件中添加配置    这个引用自:http://www.cnblogs.com/raphael5200/p/6677549.html,感谢 <profil

maven 学习 十 关于打包

clean package -Dmaven.test.skip=true -P product 这个命令干的活: 清class文件,打包构建,跳过测试,注意最后一个 -P product, 会激活项目下的pom.xml配置的<profiles>标签下id为product. Maven提供了Profile的概念来决绝不同环境打包的问题: <profiles> <profile> <id>kaifa</id> <properties> &