相关推荐recommended
谁能想到原因如此炸裂?启动Spring Boot应用,无法加载配置文件
作者:mmseoamin日期:2024-01-25

前言

今天打算从头创建了一个Spring Cloud项目,过程可以说是磕磕绊绊,不是依赖问题就是一些pom的问题。一度想要放弃,但还是咬牙坚持了下来。弄到最后感觉没啥问题的时候,突然发现Spring Boot既然不能读取application.properties、application.yml配置文件?好好好,这么玩是吧?

解决方案

我二话没说,反手就是百度、Bing、Google,其解决方案如下。

pom问题导致编译时没有将配置文件生成到target目录

简单来说,就是你每次启动时,一般都会重新编译并且将文件生成到target目录,如果你在target目录没有发现配置文件,说明编译时,没有将resource目录下的配置文件编译到target目录下,因此Spring Boot无法加载配置文件。

解决办法就是:


    
		
			src/main/java
			
				**/*.*
			
		
		
			src/main/resources
			
				**/*.*
			
		
	
	
		
			org.springframework.boot
			spring-boot-maven-plugin
		
	

将上述代码放在pom文件中即可。

pom的packaging问题

但是事情远远没有上述那么简单,我搜索了大半个互联网,都仅仅只有上述的解决方案,但是我不管怎么通过上述代码去改pom文件,都无济于事。正当我一筹莫展之际,我的目光锁定在了:

pom

我在心里暗想,这个打包方式是pom,我改成jar的话,它以jar包形式进行打包,会不会解决这个问题?于是:

jar

再次运行……成功发现target目录下生成了配置文件,真的是无语了……

后来查阅资料发现:

在Maven项目中,POM文件(Project Object Model)和JAR文件在元素中具有不同的含义和作用。

  1. POM(pom):

    • pom 表示该Maven模块不会生成可执行的JAR文件,而只是一个用于管理和描述项目的元数据文件。
    • POM模块通常用于组织和管理多个子模块的依赖关系,或者作为一个聚合项目,负责汇总多个子模块的构建和依赖。
    • JAR(jar):

      • jar 表示该Maven模块将生成一个可执行的JAR文件,其中包含项目的编译代码和所有依赖的库。
      • JAR文件通常是用于部署和运行Java应用程序的可执行文件,这些应用程序可以被其他应用程序或系统使用。

通常,一个Maven项目可以包含多个模块,每个模块都有不同的 设置,取决于模块的角色和功能。例如,一个多模块项目可能包含一个POM模块来管理依赖和构建设置,以及多个JAR模块来构建可执行的Java应用程序或库。

总之,pom 表示一个项目模块不生成JAR文件,而 jar 表示一个项目模块将生成一个可执行的JAR文件。

总结

有时候一个人排查BUG真的很无助,特别是发现百度、Bing上CSDN翻阅大半页都是一个回答,真的非常绝望。Google也发现没有类似的问题。这个时候只能完全凭借感觉以及运气来解决……