1原因
写这个笔记的原因是今天一个项目组想要在他本地运行我的工程,想直接给他个可运行的jar包,但是最近刚刚从eclipse换成idea,打包什么的还有些不习惯,怕给别人的jar包有问题,就想用解压工具看下里边的lib看下是否把依赖jar打进去了。事实证明idea的使用还是很优雅的,jar包没有任何问题,但是事后我突然发下,我是给一个子工程打可运行jar包,为什么在lib中没有看到父工程的jar,因为怕jar包有问题我赶紧在本地用命令运行了下,一切正常,也就是说父工程的jar存在否不影响子工程的运行。
2.问题及原因
这个结果对我还是听困惑的,因为maven的父子依赖,父工程替子工程管理版本,那么也就是说子工程的可运行jar包如果没有父的依赖,那么pom中的很多依赖就没有版本,那么也就是maven子工程运行时只要依赖的jar存在即可,而不会去判断jar的版本,jar包的版本仅仅时为了让maven从中央仓库或者私服上把jar包赋值下来。如此依赖子工程的可运行jar没有父工程也就说的通了。
3.其他
本地的一个spring boot工程本地为建立父工程,但是工程内引入了父工程spring-boot-starter-parent的jar包,解压查看里边只有pom文件,其主要的功能是帮助我们管理版本,因为很多版本之间时有冲突和依赖的,这种jar可以帮助我们快速建立工程和管理自己的版本。