研究这个问题之前我们需要讨论下Spring Boot项目的打包方式。

Spring Boot打包的方式

Spring Boot默认的打包方式为fat jar,即项目的依赖jar包也会被包含在Spring Boot项目的jar包当中。Spring Boot项目的jar包结构如图所示:

Screen Shot 2018-08-16 at 9.40.31 pm.png

如图所示,所有依赖jar包位于BOOT-INF/lib目录下。

Spring Boot默认fat jar的打包方式好处是比较多的。项目最终生成仅仅是一个文件,基本上不依赖运行环境,极大地方便了部署和上线操作。

可是这种方便的fat jar方式并不适用于各种场景。比方说我们需要将依赖的jar包独立出来,不放入最终项目的jar文件内,该怎么操作呢?

Spring Boot 依赖分离打包

这种打包方式也有专门的英语名词:thin jar。下面介绍两种thin jar的打包方式。

IDE直接分开打包

下面以Intellij IDEA为例,讲一下如何以thin jar方式打包。

打开Project Structure -> Artifacts .点击“+” -> JAR -> Empty

Screen Shot 2018-08-16 at 10.11.20 pm.png

name起名为dep,Type选择Other。在右下方选择所有的Maven依赖包,右键选择 Put into Output Root.

Screen Shot 2018-08-16 at 10.13.21 pm.png

同上,再次创建一个artifact,选择jar -> Empty . name 设置为project,type为jar。右下方Available Elements右键点击'Demo' compile output,选择 Put into Output Root.

Screen Shot 2018-08-16 at 10.30.27 pm.png