有个springboot工程,是多模块的,名叫demo,demo是父工程,pom类型。
demo下有两个模块,一个叫demo-api,一个叫demo-impl,demo-api是接口模块,被demo-impl依赖。demo-impl是实现的模块。
打包的时候,可以对demo、demo-api、demo-impl进行打包
对demo打包,并不会打包出demo-xxx.jar,而是对其子模块demo-api和demo-impl执行打包命令。最终打包出demo-api-xxx.jar和demo-impl-xxx.jar
也可以单独对demo-api或demo-impl执行打包命令,但是注意对demo-impl打包的时候,由于依赖demo-api,所以当本地仓库如果没有demo-api-xxx.jar,将打包失败。此时必须先对demo-api进行mvn install
,这样demo-api会作为jar包的形式存在于demo-impl中。
重点来了,假如打出的demo-api-xxx.jar是10M(因为依赖了一些其他jar),那么打出来的demo-impl-xxx.jar所引入的demo-api-xxx.jar,究竟是多大的?
答案:被引入的demo-api-xxx.jar是没有任何jar包的,所有要用到的jar包,不管是demo-api要用到的还是demo-impl用到的,都会去除重复。
否则demo-api-xxx.jar中包含的jar将和demo-impl很大概率重复,如果maven打包设计成这样,那是很不合理的。