客户要求服务部署到本地服务器上,服务是根据业务做了多模块。 原本的方案每多一个本地部署的需求,就在每个模块的 resources 下加一个文件夹,打包的时候通过选择 profiles 只打包那个文件夹下的配置,但是因为模块有点多,所以每次新增一堆东西很麻烦。
现在像减少重复的工作,试图把每个模块的 profiles 移除掉,统一使用父 pom 中的 profiles ,在里面配置变量,因为项目只用了 mysql ,redis ,所以配置项也不多,配置如下:
# applicaiton.yml
spring:
profiles:
active: @profiles.active@
server:
port: 8010
# application-prod.yml
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
dynamic:
primary: master
datasource:
master:
url: @mysql.master.url@
username: @mysql.master.username@
password: @mysql.master.password@
slave:
url: @mysql.slave.url@
username: @mysql.slave.username@
password: @mysql.slave.password@
redis:
host: @redis.host@
sentinel:
master: @redis.sentinel.master@
nodes: @redis.sentinel.nodes@
password: @redis.password@
timeout: 10s
但是尝试了下打包,发现并不能正确写入变量,请问还有什么好的解决方案吗。(配置中心怕是不行,领导估计是不让用)
1
ChoateYao 241 天前
使用 spring.profiles.group 实现,其他配置文件只要放在一个文件夹里面就行了
|
2
kennfalcon 240 天前
maven 里打包是不是没有配置变量替换信息
|
3
jinjiang2024 240 天前
host 和 url 使用别名映射,其他用户名和密码统一 不就可以实现了
|
4
jinjiang2024 240 天前
类似这种
# redis 配置 redis: # 地址 host: redisTest # 端口,默认为 6379 port: 6379 # 密码 password: 123456 # 连接超时时间 timeout: 10s |
5
a1oyss0925 OP @kennfalcon 配置了,应该是子模块里没写的原因
|
6
lwq84510 240 天前
使用环境变量 export SERVER_PORT=10086, 配置文件加载环境变量 server.port=${SERVER_PORT:8848}
|
7
babhbsbx 239 天前
今天搭新项目,遇到的问题,我的解决办法如下
在 build 标签下添加如下内容 <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> |