两种方式快速创建一个spring boot的MAVEN工程
一、使用标签继承父模块
org.springframework.boot
spring-boot-starter-parent
2.1.0.RELEASE
绝大多数工程都是采用此方法引入spring boot工程的依赖,下面我们就来看下spring-boot-starter-parent到底有什么内容。
4.0.0
org.springframework.boot
spring-boot-dependencies
2.1.0.RELEASE
../../spring-boot-dependencies
spring-boot-starter-parent
pom
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
[email protected]
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.3
42.2.5
0.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中定义好了,因此我们在使用的时候只需要把我们要用到的依赖引入就可以了,写起来非常的简洁。
另外,两种方式都只需要定义好父模块的版本即可,实际要引用到某个子模块的时候不需要在自己写版本号。