谁能想到原因如此炸裂?启动Spring Boot应用,无法加载配置文件

前言

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

解决方案

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

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

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

<build>
    <resources>
		<resource>
			<directory>src/main/java</directory>
			<includes>
				<include>**/*.*</include>
			</includes>
		</resource>
		<resource>
			<directory>src/main/resources</directory>
			<includes>
				<include>**/*.*</include>
			</includes>
		</resource>
	</resources>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
		</plugin>
	</plugins>
</build>

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

pom的packaging问题

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

<packaging>pom</packaging>

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

<packing>jar</packing>

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

后来查阅资料发现:
在Maven项目中,POM文件(Project Object Model)和JAR文件在<packaging>元素中具有不同的含义和作用。

  1. POM(pom):

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

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

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

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

总结

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

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值