maven项目读取配置文件的问题

    技术2023-06-20  82

    平常写的maven项目在打包时,经常需要处理的两个问题,一个是打包不成功,出现各种问题(类似主清单找不到,主类找不到等等);另一个是报找不到配置文件的问题。

    这里讲一下配置文件读不到的问题

    通常情况下,我们在本地使用 “src/main/resources/” 拿到resources下的文件(如果你的配置是放在packge下,也可以通过这种方式根据路径引过去,简直不要太简单),然而如果遇到需要打包部署项目的时候,需要打包,打包完成后(默认打包没问题)会发现它找不到配置文件,你解压后可能在里面找到配置也可能压根没打包进去。这种情况下,就比较上脑了。。。。

    处理方式 这种情况下,我们需要做两步处理: 一、指定将自己的配置目录/文件加入到打包中 在maven项目的pom中,在build标签下加入如下配置(以resouces目录下的yml文件为例)

    <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.yml</include> </includes> <filtering>false</filtering> </resource> </resources>

    二、读取文件流

    // 这里就以读取文件流为例,这种就会读取resources下的conf.yml文件(不能在前面加/) InputStream in = YamlConf.class.getClassLoader().getResourceAsStream("conf.yml");

    以上两部基本就能解决打包之后无法读取配置文件的问题,我这里的问题得到了解决!

    下面科普一下一些小知识

    YamlConf.class.getClassLoader().getResourceAsStream 是获取在classpath路径下(可以理解是resources路径下)的资源文件的输入流,项目打包后src下的一些资源文件移至WEB-INF/classes,所以 如果resouces下放了一些.properties或者.yml配置文件,在打包后一般是放在classes下的,所以这种方式可以读到!

    但是,我也遇到过一个奇怪的现象

    springboot项目打包,一般情况下不需要配置resources的,直接打包即可,很方便。但我在读取配置文件的时候,这种从class.getClassLoader().getResourceAsStream 找不到配置

    更换了这种通用方式还是无效

    Resource resource = new ClassPathResource("resource.properties"); InputStream is = resource.getInputStream();

    之后如果找到了有效的方法再补上

    参考地址: https://www.cnblogs.com/whalesea/p/11677657.html https://blog.csdn.net/feeltouch/article/details/83796764

    Processed: 0.021, SQL: 9