首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
部署的问题
mrbai2018
2020-04-01 16:44
你好,问一个关于部署的问题
undertow 部署的时候 无法读取到外部的配置文件,请看截图,他实际上读取的还是jar包里面的配置文件。
项目:
JFinal
评论区
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
@mrbai2018
赞
回复
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目录就可以了。
回复
发送
我要反馈
热门反馈
扫码入社
所以解决办法是在打包的时候过滤掉配置文件,不要打包到 jar 里面去,过滤的配置在 jfinal club 的 pom.xml 与 package.xml 中有的