spring聚合项目,项目A本来是没有springboot启动类的,只是被其他项目B依赖,后面有一天,项目A也做改成了一个需要启动的服务,然后加了spring boot的启动类,在pom文件中加上了springboot的maven插件:spring-boot-maven-plugin。然后在打包的时候到项目B,就报错,找不到依赖A中的类,一开始百思不得其解,明明有那个类,还可以点进去,但是打包的时候就是说找不到引用的那个类,被这个问题困扰了好久。后面找到一篇文章,才清楚其中缘由:
Spring Boot 中默认打包成的 jar 叫做 可执行 jar,这种 jar 不同于普通的 jar,普通的 jar 不可以通过 java-jar xxx.jar
命令执行,普通的 jar
主要是被其他应用依赖, SpringBoot
打成的 jar
可以执行,但是不可以被其他的应用所依赖,即使强制依赖,也无法获取里边的类。但是可执行 jar 并不是 Spring Boot 独有的,Java 工程本身就可以打包成可执行 jar 。
在springboot里面需要打包成可执行的jar,也就是能启动成一个服务的,需要用到 spring-boot-maven-plugin。
原文剖析得比较清楚
原文链接:https://zhuanlan.zhihu.com/p/72955064