新版IDEA 2020.1碰到的一个小坑

使用新版idea创建了一个springboot项目,运行build时发生如下报错。

1
2
3
4
5
6
Error:(3, 32) java: 程序包org.springframework.boot不存在
Error:(4, 46) java: 程序包org.springframework.boot.autoconfigure不存在
Error:(5, 40) java: 程序包org.springframework.boot.builder不存在
Error:(6, 52) java: 程序包org.springframework.boot.web.servlet.support不存在
Error:(9, 34) java: 找不到符号
符号: 类 SpringBootServletInitializer

http://static.cyblogs.com/QQ20201107-080822@2x.jpg

诡异的是,使用mvn打包却是正常的,能生成正确的jar并且能通过命令行启动 后来通过查阅资料得知新版IDEA需要在Setting里将 delegate IDE build/run actions to Maven勾选上即可。

http://static.cyblogs.com/QQ20201107-081022@2x.jpg

其它

在解决这个问题的过程中,还了解到使用spring-boot-maven-plugin这个插件打的jar的结构会和普通插件maven-jar-plugin的有些不一样。spring-boot-maven-plugin将所有应用启动运行所需的jar全部包含进来了,具备独立运行的条件。

1
2
3
4
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

spring-boot-maven-plugin打包的jar目录:

http://static.cyblogs.com/QQ20201107-081147@2x.jpg

而使用普通插件打包的结构如图:

http://static.cyblogs.com/QQ20201107-081242@2x.jpg

最后,这里补充一点。如果是你想在IDEA里面,不是通过Maven来依赖,这里就不用打钩,否则你每次都必须要install你的jar包到本地来。

参考地址

如果大家喜欢我的文章,可以关注个人订阅号。欢迎随时留言、交流。如果想加入微信群的话一起讨论的话,请加管理员微信号:chengcheng222e,他会拉你们进群。

简栈文化服务订阅号