Spring|Spring Boot parent 或者 spring-boot-dependencies引入spring boot

两种方式快速创建一个spring boot的MAVEN工程 一、使用标签继承父模块

org.springframework.boot spring-boot-starter-parent 2.1.0.RELEASE

绝大多数工程都是采用此方法引入spring boot工程的依赖,下面我们就来看下spring-boot-starter-parent到底有什么内容。
【Spring|Spring Boot parent 或者 spring-boot-dependencies引入spring boot】4.0.0org.springframework.boot spring-boot-dependencies 2.1.0.RELEASE ../../spring-boot-dependencies spring-boot-starter-parentpom Spring Boot Starter Parent Parent pom providing dependency and plugin management for applications built with Maven https://projects.spring.io/spring-boot/#/spring-boot-starter-parentUTF-8 1.8 @ ${java.version}UTF-8 ${java.version} true ${basedir}/src/main/resources **/application*.yml **/application*.yaml **/application*.properties ${basedir}/src/main/resources **/application*.yml **/application*.yaml **/application*.properties org.jetbrains.kotlin kotlin-maven-plugin ${kotlin.version} compilecompile compile test-compiletest-compile test-compile ${java.version} true maven-compiler-plugin true maven-failsafe-plugin integration-test verify ${project.build.outputDirectory} maven-jar-plugin ${start-class} true maven-war-plugin ${start-class} true org.codehaus.mojo exec-maven-plugin ${start-class} maven-resources-plugin ${resource.delimiter} false pl.project13.maven git-commit-id-plugin revision true yyyy-MM-dd'T'HH:mm:ssZ true ${project.build.outputDirectory}/git.properties org.springframework.boot spring-boot-maven-plugin repackage repackage ${start-class} maven-shade-plugin package shade META-INF/spring.handlers META-INF/spring.factories META-INF/spring.schemas ${start-class} org.springframework.boot spring-boot-maven-plugin 2.1.0.RELEASE true true *:* META-INF/*.SF META-INF/*.DSA META-INF/*.RSA org.eclipse.m2e lifecycle-mapping 1.0.0 org.codehaus.mojo flatten-maven-plugin [1.0.0,) flatten org.apache.maven.plugins maven-checkstyle-plugin [3.0.0,) check

可以看出这个工程又是依赖于spring-boot-dependencies,也就是我们第二种方式引入spring boot所需依赖。
二、直接引入spring-boot-dependencies的pom内容
org.springframework.boot spring-boot-dependencies 2.1.0.RELEASE pom import

这种方式无需继承父模块,可以解决以上第一种单继承的问题。
scope=import,type=pom表示在此pom中引入spring-boot-dependencies的pom的所有内容,注意只能在dependencyManagement中使用。
下面看一下spring-boot-dependencies的内容。
4.0.0 org.springframework.boot spring-boot-dependencies 2.1.0.RELEASEpom Spring Boot Dependencies Spring Boot Dependencies https://projects.spring.io/spring-boot/# Apache License, Version 2.0 http://www.apache.org/licenses/LICENSE-2.0 Pivotal info@pivotal.io Pivotal Software, Inc. http://www.spring.io https://github.com/spring-projects/spring-boot5.15.7 2.7.7 1.9.67 2.6.3 1.9.2 3.11.1 4.0.6 2.1.4 3.0.0 1.9.3 2.6.2 3.6.0 1.4.0 1.11 2.5.0 3.8.1 1.6 2.6.0 2.1.0 2.7.0 10.14.2.0 1.6.1 4.0.3 2.10.6 3.6.1 6.4.2 2.1.1 1.6.0 1.0.1 5.2.1 2.3.28 2.2.5 3.0.0 2.3.1 2.5.3 2.8.5 1.4.197 1.3 3.11 1.2.3 5.3.7.Final 6.0.13.Final 3.2.0 2.4.1 2.33 4.1.4 4.5.6 4.4.10 9.4.0.Final 2.14 2.9.7 3.0.10 1.2.0 1.3.2 1.1.0 2.3.1 2.3.1 2.0.1 1.1.3 1.0 1.6.2 1.0.3 2.2 1.3 2.0.1.Final 1.1 1.1.6 3.0.5 3.3.2.Final 7.6.0.Final 2.0.6 2.9.0 2.27 6.3.1 9.4.12.v20180830 8.5.33 2.2.0.v201112011158 1.0.1 1.14 4.5.2 2.10.1 ${johnzon-jsonb.version} 1.1.10 1.6.0 3.11.5 1.5.0 2.4.0 1.2 1.3.1 4.12 5.3.1 2.0.0 1.2.71 5.1.2.RELEASE 3.6.2 2.11.1 1.2.3 1.18.2 2.3.0 1.8 3.1.0 3.1.0 3.8.0 3.1.1 2.8.2 3.0.0-M2 2.22.1 3.1.0 2.5.2 3.1.0 3.1.0 3.0.1 3.1.0 3.2.0 3.7.1 3.0.1 2.22.1 3.2.2 1.1.0 1.9.10 2.23.0 3.8.2 1.9.2 6.4.0.jre8 8.0.13 1.9.22 3.1.4 4.1.29.Final 2.0.17.Final 1.1.01.0.342.2.50.5.0 2.3.0 4.2.1 5.4.3 1.0.2 Californium-SR2 3.1.1 1.3.8 2.2.3 1.2.1 1.5.0 3.14.0 2.33.0 4.3.0 4.0.1 1.7.25 1.23 7.4.0 5.1.2.RELEASE 2.1.0.RELEASE 4.1.0.RELEASE 2.0.3.RELEASE Lovelace-SR2 ${spring.version} 0.25.0.RELEASE 5.1.0.RELEASE 2.2.0.RELEASE 2.3.2.RELEASE 1.2.0.RELEASE 2.0.2.RELEASE 1.2.2.RELEASE 5.1.1.RELEASE Bean-RELEASE 3.0.4.RELEASE 3.25.2 3.1.0 ${javax-mail.version} 3.0.11.RELEASE 2.0.1 3.0.1.RELEASE 3.0.4.RELEASE 2.3.0 9.0.12 4.0.8 2.0.14.Final 2.7 3325375 0.35 1.6.3 1.4.01 1.0.2 2.6.2 ...... ......

可以看出绝大多数我们可能用到的包依赖和插件依赖都已经在spring-boot-dependencies中定义好了,因此我们在使用的时候只需要把我们要用到的依赖引入就可以了,写起来非常的简洁。
另外,两种方式都只需要定义好父模块的版本即可,实际要引用到某个子模块的时候不需要在自己写版本号。

    推荐阅读