java.lang.IllegalStateException: Failed to load ApplicationContext

问题描述

mvn clean install的时候报的如下异常:

在这里插入图片描述
紧接着又往下翻了一下日志还有一个这个错误

在这里插入图片描述
在这里插入图片描述

按正常来说通过@@可以取pom当中的properties标签的值呀。但是可以发现编译过后的application当中的值并没有被替换。

在这里插入图片描述

解决过程

(1)我先是将server.port=@server.port@替换成了server.port=8082,然后clean install直接成功了,那也就证明就是这块的问题导致的。

(2)既然知道问题原因了,然后我尝试着不使用mvn clean install命令,通过idea工具当中的构建,竟然成功了。

在这里插入图片描述

而且打出来的jar包端口号也生效了

在这里插入图片描述

按正常来说idea当中Lifecycle当中构建和我们直接执行maven命令是没有区别的,为什么他可以呢?

于是我突然想到了我在idea当中设置了跳过测试,如下:

在这里插入图片描述
maven当中有很多生命周期阶段,其中test也是其中一个阶段,也就是在执行install的时候会经过test阶段,test阶段绑定了surefire插件,这个插件会给我们系统做一些简单的测试,例如系统可以运行,还有带有@Test注解的方法是否能正常运行。

而我这里使用了@@变量取值,也就是在还没有进行值替换的时候执行了test阶段,恰好是取的端口值,test阶段在启动项目的时候端口设置的不是数字直接就发生了异常,从而直接将构建过程给终止掉了。

对maven生周期不了解的建议看一下这篇文章:https://blog.youkuaiyun.com/weixin_43888891/article/details/130756192

解决方案,命令当中加上-DskipTests即可解决:
mvn clean install -DskipTests

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怪 咖@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值