问题描述
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.csdn.net/weixin_43888891/article/details/130756192
解决方案,命令当中加上-DskipTests即可解决:
mvn clean install -DskipTests