部署的问题

你好,问一个关于部署的问题

undertow 部署的时候 无法读取到外部的配置文件,请看截图,他实际上读取的还是jar包里面的配置文件。


1.png3.png4.png5.png

评论区

JFinal

2020-04-01 16:52

当出现同名配置的时候,优先读 jar 内的

所以解决办法是在打包的时候过滤掉配置文件,不要打包到 jar 里面去,过滤的配置在 jfinal club 的 pom.xml 与 package.xml 中有的

JFinal

2020-04-01 16:54

如果希望留一部分配置文件在 jar 包内,一部分放在外部,然后用 appendIfExists(...) 来追加并覆盖的话

可以让 jar 包内只留其中的一个,另一个只留在打好包的 config 目录中,让 appendIfExists(...) 来读取

mrbai2018

2020-04-01 16:54

@JFinal 我的没有同名,但是我知道怎么回事了。是因为我用的docker没有做映射。

mrbai2018

2020-04-01 16:55

@JFinal volumes 映射忘记做了。配置上就好了。谢谢波总!

JFinal

2020-04-01 16:55

这样的话,既保障了基本配置的默认配置,又可以在外部任意覆盖这些配置

总之,注意不要让 jar 包与 config 目录下出现同名配置就好,因为同名文件只会有一个生效,并且只有 jar 内的生效

mrbai2018

2020-04-01 17:02

@JFinal ok,谢了波总。

JFinal

2020-04-01 17:11

JFinal

2020-04-01 17:16

@mrbai2018 我看到你的项目除了 config 以外,还弄了个 conf 目录

加载自建的目录下的配置,只需要在 jfinal.sh 中的环境变量 CP 中继续添加即可,例如:
CP=${APP_BASE_PATH}/config:${APP_BASE_PATH}/lib/*
改成
CP=${APP_BASE_PATH}/config:${APP_BASE_PATH}/lib/*:${APP_BASE_PATH}/conf

极度方便

我想起来 @山东小木 问过是否能加载打包后自建的 classes 目录下面的 .class 文件,原理是一样的,这样配置:

CP=${APP_BASE_PATH}/config:${APP_BASE_PATH}/lib/*:${APP_BASE_PATH}/classes

也就是说 CLASSPATH 下面除了可以放配置文件以外,还可以放 .class 文件被加载,但要注意 jar 包中如果出现同名 .class 后的优先级问题

如果优先级不能满足,在打包时过滤掉那些 .class 文件不打到 jar 包中去

mrbai2018

2020-04-04 11:19

@JFinal conf是我一开始看错了,主要是因为集成docker的时候没有配置卷目录。配置上之后,加上config目录就可以了。

热门反馈

扫码入社