• maven之根据profile动态切换resource


     日常工作中,发布的环境一般分为 dev, test, product。 不同的环境中的配置不一样(数据库连接,服务地址等),每次编译之后再改也是很麻烦。

    maven可以设置profile,然后根据active的profile加载相应的配置文件。

    下面就介绍下如何来配置。

    首先来张资源的图

    (1),在pom.xml配置<profiles>节点,如下图,配置了dev,test,prod这3个profile,其中dev为默认激活的(意思是如果你在打包时,没有使用-P参数指定profile,就使用默认激活的profile)

     有3点要注意的:

    1. <id>是profileid, 打包时选择profile就是使用-Pprofileid

    2. 如何激活dev,  在dev的profile中添加<activation> <activeByDefault>true</activeByDefault></activation>

    3. 每个profile中要配置 <properties><profileActive>替换字符串</profileActive></properties>,这里的替换字符串用于在下面的步骤中根据不同的profile替换成不同的内容。profileActive这个是属性的名称,可以改成其他的,只要跟下面匹配的地方一致

    (2),在pom.xml配置<build><resources>节点,如下图,我这里配成了src/main/resources/${profileActive}, 在打包的时候,选择一个profile(如dev),就会被替换成所配置的属性的值(dev就会被替换成src/main/resources/dev111)

    需要注意的是:

    1,使用<directory>节点指定要拷贝哪个路径下的文件夹或者文件

    2,黄框中的字段要跟profile中的属性名一致。

    注意: 我替换的是文件夹的全称, 其实可以替换部分文件夹名,或者文件名,这里只是做了个字符串的替换而已。以下是几个例子

    1. 替换部分文件夹名: src/main/resources/${profileActive}_config     ,   dev会替换成  src/main/resources/dev111_config

    2.替换部分文件名: src/main/resources/application-${profileActive}.properties    , dev会替换成  src/main/resources/application-dev111.properties 

    (3),然后就可以运行  mvn clean package -Pdev, maven就会把devprofile配置的dev111文件夹中的文件拷贝到class path目录下。

    (4), <build><resources>节点下可以包含多个<resource>节点, maven会把每个<resource>节点指定的内容全部拷贝到指定的目录(见下面targetPath)

    (5), <resource>节点包含5个子节点

    1.directory, 需要拷贝的资源文件的路径

    2.targetPath, 拷贝到class path下面的哪个路径下(相对于class path 根目录的相对路径),如果不写就默认拷贝到class path的根目录

    3.excludes, 可以过滤掉资源目录下的某些文件夹或某些文件

    4.includes, 这个我没搞明白是什么意思,我的想法是在excludes的文件夹中include部分文件吧,如果哪位大神知道求指导

    5.filtering, 如果设置为true,就会把指定的${key}替换掉。

  • 相关阅读:
    Go语言学习之方法和接口
    Go语言学习之for循环
    Go语言学习之结构体
    Go语言学习之Map
    Go语言学习之值传递和引用传递解释And Go语言指针
    GO语言学习之切片(slice)
    GO语言学习之多维数组
    GO语言学习之数组
    GO语言学习之常用内置函数
    Oracle ORA28040报错解决
  • 原文地址:https://www.cnblogs.com/yfdream/p/8626562.html
Copyright © 2020-2023  润新知