首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
fatjar 外部config下的配置文件不加载
macaque
2019-11-08 10:56
fatjar 外部config下的配置文件不加载 是什么原因呢
项目:
JFinal
1
1
评论区
macaque
2019-11-08 10:57
@Jfinal
回复
JFinal
2019-11-08 15:33
jar 包内部存在同名配置文件,那么 config 下面的则不会加载,这是一个优先级问题
在打包的配置中,配置一下过滤,避免将配置文件打入 jar 包
如果是 jfinal undertow 的配置文件,还可以通过 -dev、-pro 结尾字符串来实现你的需求,让 jar 包打入 -dev 配置,让 config 中放 -pro 配置,例如:
1: jar 包中打入 undertow.txt
2:config 目录放入 undertow-pro.txt
这样的话 config 目录的就会被加载
如果是 jfinal 自身的配置文件,可以在 MyConfig 中这么来用:
public class MyConfig extends JFinalConfig {
private Prop p;
public void configConstant(Constants me) {
this.p = PropKit.useFirstFound("jfinal-club-config-pro.txt", "jfinal-club-config-dev.txt");
me.setDevMode(p.getBoolean("devMode"));
}
public void configEngine(Engine me) {
me.setDevMode(p.getBoolean("engineDevMode");
}
上面的代码 PropKit.useFirstFound(first, second) 会优先年 first 配置,找到则使用,找不到则继承找 second 配置
而你就可以利用这个 PropKit.useFirstFound(...) 机制,将 second 打入 jar 包, 让 first 配置放入 config 目录
这种用法在 jfinal club 中有,注意看源码:
JFinalClubConfig
回复
macaque
2019-11-08 17:11
@JFinal
我是这么写的PropKit.use("cbox_config_dev.txt").appendIfExists("cbox_config_pro.txt"); 然后jar包里放的是cbox_config_dev.txt, config里放的是cbox_config_pro.txt 这样不行么?
回复
JFinal
2019-11-08 18:13
@macaque
appendIfExists(...) 也可以,但建议使用 PropKit.useFirstFound(...)
回复
JFinal
2019-11-08 18:15
@macaque
appendIfExists(...) 也可以,但建议使用 PropKit.useFirstFound(...)
这个问题的本质是,config 目录与 jar 包中出现同名配置文件时, jar 包中的优先
解决的时候,让 jar 不要打入配置文件,或者打入 dev 配置,在 config 中添加 pro 配置
回复
macaque
2019-11-11 10:24
@JFinal
我用appendIfExists 不加载config下的,我换成useFirstFound试试
回复
macaque
2019-11-11 10:29
@JFinal
换成useFirstFound也是读不到config下的
回复
JFinal
2019-11-11 10:33
@macaque
换成 useFirstFound 一定是可以的,前提是你的 jar 里头没有同名配置文件
回复
macaque
2019-11-11 11:43
@JFinal
我在jar包里是cbox_config_dev.txt,config下是cbox_config_pro.txt, PropKit.useFirstFound("cbox_config_pro.txt","cbox_config_dev.txt");这么写的
回复
JFinal
2019-11-12 11:36
@macaque
这样写是对的,你那里没有实现,估计是文件名有错误,或者 jar 包中存在 cbox_config_pro.txt
回复
发送
我要反馈
热门反馈
扫码入社