maven打包jar项目后,所有的文件都在jar包,这样做修改配置文件比较麻烦。
因此我不想把src/main/resources弄到jar包内,而是弄到jar包外面,也就是和jar包相同目录下。打包后,对resources文件夹下配置文件读取的java代码,打包前和打包后运行依然没有问题。
假若有一个方法调用过程中,会读取resources里的test.txt文件的内容输出到控制台上,打包前与打包后,调用方法的过程中,不能出现“test.txt文件不存在、找不到test.txt文件之类”的的异常。并且打包后,如果修改test.txt的内容,启动jar后,读取test.txt输出的内容也会发生改变。
如果做不到以上要求,我还不如自己来自定义配置文件的读取路径的工具类,那这样的话resources文件夹放配置文件就毫无意义了。因为有些框架会把配置文件默认设置在resources文件夹下,比如logback,log4j2日志框架的配置文件默认读取路径会在src/main/resources下,不能做到的话,考虑到线上运行前,可能会修改日志框架的配置文件,就只能自定义logback、log4j2的读取指定配置文件的路径了。
比如假设打包后的jar包名为dome.js
则打包后目录下的文件是
dome.jar
resources文件夹,
就算打包后只有demo.jar包文件,打包后把resources文件夹手动复制到dome.jar所在目录下,控制台输出的信息能成功显示读取resource文件夹的内容也可以。
如何通过配置pom.xml做到?
楼上@gg22g2 的思路没问题的,就是得稍加改造一下:
先在 resource里排除你的所有文件(
**/**
不是**/*.*
):然后配置下 resource 插件,使用它的
copy-resources goal
来完成你的复制工作(插件版本看你的maven版本自行调整):最后正常
clean package
就可以了,如果有帮助请关注支持一下