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.0 org.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-parent UTF-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}
compile compile
compile
test-compile test-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.RELEASE pom
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-boot 5.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.0 1.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中定义好了,因此我们在使用的时候只需要把我们要用到的依赖引入就可以了,写起来非常的简洁。
另外,两种方式都只需要定义好父模块的版本即可,实际要引用到某个子模块的时候不需要在自己写版本号。
推荐阅读
- Activiti(一)SpringBoot2集成Activiti6
- SpringBoot调用公共模块的自定义注解失效的解决
- 解决SpringBoot引用别的模块无法注入的问题
- 2018-07-09|2018-07-09 Spring 的DBCP,c3p0
- spring|spring boot项目启动websocket
- Spring|Spring Boot 整合 Activiti6.0.0
- Spring集成|Spring集成 Mina
- springboot使用redis缓存
- Spring|Spring 框架之 AOP 原理剖析已经出炉!!!预定的童鞋可以识别下发二维码去看了
- Spring|Spring Boot之ImportSelector