博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot多环境下maven打包
阅读量:5111 次
发布时间:2019-06-13

本文共 4734 字,大约阅读时间需要 15 分钟。

前言:

最近在项目中使用springboot时发现,采用在pom中定义不同的profile,并且maven打包时

采用-P参数并不能替换我application.properties文件中指定占位符的问题。

配置文件布局:

在application.properties中定义整个项目中不同环境下共通的配置属性,并采用springboot针对配置文件的特性 - spring.profiles.active=dev或者test

来自动加载合并application-dev/test.properties中特有的配置的功能,开发,测试,生产环境配置文件命名方面需要遵守springboot的约束即可。

Maven pom 配置:

 

备注:实际上使用springboot,上述的<resources>标签,以及<outputDirectory>都是不需要的,其都已经定义过了。在这里写出来只是为了讲述maven打包的原理。

执行打包命令:

    进入项目pom文件所在目录,执行

    mvn clean package -P test

    命令解释:

            1:执行后会根据pom中定义的profiles标签寻找对应的profile id为test的,将其properties下的子标签获取到,拿到key = boot.profile,value = test。放入map中

            2:根据 build中定义的resources标签,开始打包对应的资源文件,由于指定了filtering为true,故会将上一步中得到的map中的key拿去替换resource中指定的资源文件中的占位符${key},为value值。

遇到的问题:

 

执行后查看classes文件下的资源文件,发现并没有替换掉

原因:

    发现最终是因为springboot导致的,查看其pom继承,

进入后发现,springboot默认指定资源文件中的占位符为@@,并不是maven默认的 ${}

 

解决方案:

    1:将application.properties中的占位符由${key} -> @key@ 

    2:覆盖springboot的默认规则

 
1     
2
${project.artifactId}
3
4
5
true
6
${basedir}/src/main/resources
7
8
**/application*.yml
9
**/application*.yaml
10
**/*.properties
11
12
13
14
${basedir}/src/main/resources
15
16
**/application*.yml
17
**/application*.yaml
18
**/*.properties
19
20
21
22
23
24
org.springframework.boot
25
spring-boot-maven-plugin
26
27
28
maven-resources-plugin
29
30
utf-8
31
true
32
33
34
35
  其中,增加maven-resources-plugin就已经可以使用${}了(此时@@依旧存在),resources只是修改影响文件范围
  filtering设置为true很关键,不然引用不到profiles中的内容。

    3:测试了再自己的pom中不增加resource配置,只是增加

也是可以的哦

建议:

    既然已经使用了springboot,就不要再用回之前的写法了,平白增加配置。

 

附:pom的profile导入.properties

方法1:

1   
2
3
4
dev
5
6
true
7
8
9
dev
10
11
12
13
${basedir}/src/main/resources/application-dev.properties
14
15
16
17
18
19
pre
20
21
true
22
23
24
pre
25
26
27
28
${basedir}/src/main/resources/application-pre.properties
29
30
31
32

方法2:

 

1   
2
3
4
dev
5
6
true
7
8
9
dev
10
11
12
13
14
pre
15
16
true
17
18
19
pre
20
21
22
23 24
25
26
27 ${basedir}/src/main/resources/application-${spring.profiles.active}.properties 28
29
30

 

 

转载于:https://www.cnblogs.com/fnlingnzb-learner/p/11042562.html

你可能感兴趣的文章
深入V8引擎-编译启动
查看>>
mysqli
查看>>
当前本地时间高精度
查看>>
PHP面试系列 之框架(二)---- 常见框架的特性
查看>>
hdu 6035 树分治
查看>>
HashSet去重
查看>>
\r \r\n \t的区别
查看>>
线程并行学习笔记
查看>>
基于有限状态自动机的数据类型识别功能(1)
查看>>
Minimum Inversion Number 【线段数】
查看>>
从日常生活中看对象
查看>>
近期博客内容的规划(关于Swift语言)
查看>>
守护线程
查看>>
HTML5学习笔记<二>:元素,属性,格式化
查看>>
c#职责链模式
查看>>
妙趣横生的算法--二叉树
查看>>
策略模式(Strategy Pattern)
查看>>
Android系统兼容性问题(持续更新)
查看>>
获取用户位置
查看>>
Spring入门(一)
查看>>