SpringBoot源码解读系列二——依赖配置


上一篇简单介绍了下SpringBoot的大体轮廓,我们了解到SpringBoot简化了Spring应用的开发,其实Spring自打诞生开始就是一个“胶水”框架,本身不做业务耦合,只是作为各类框架和工具的集成,体现了万能胶水的平台性,而SpringBoot是在其之上做了有些开发的优化,主要思想是“习惯优于配置”。

在开发过程中有这样一个现象,之前我们开发工程用到什么样的工具或者库,就上Maven中央仓库找到对应的Maven依赖,按照Maven坐标的配置方式很详细地配置到pom.xml中,往往这样下来,一个工程里pom.xml上千行很常见。而现在,我们只需要指定两个关键的地方,就能大大减少pom.xml的长度,相当简洁和优雅:

1、父pom依赖

在生成的SpringBoot脚手架工程中,会自动给你带上父pom的依赖,如下:

查看代码

   org.springframework.boot
   spring-boot-starter-parent
   2.6.2
    

我们可以跟进去看一下,进去发现是一个pom文件:

查看代码
<?xml version="1.0" encoding="UTF-8"?>

  4.0.0
  
    org.springframework.boot
    spring-boot-dependencies
    2.6.2
  
  spring-boot-starter-parent
  pom
  spring-boot-starter-parent
  Parent pom providing dependency and plugin management for applications built with Maven
  
    1.8
    @
    ${java.version}
    ${java.version}
    UTF-8
    UTF-8
  
  https://spring.io/projects/spring-boot
  
    
      Apache License, Version 2.0
      https://www.apache.org/licenses/LICENSE-2.0
    
  
  
    
      Pivotal
      info@pivotal.io
      Pivotal Software, Inc.
      https://www.spring.io
    
  
  
    https://github.com/spring-projects/spring-boot
  
  
    
      
        ${basedir}/src/main/resources
        true
        
          **/application*.yml
          **/application*.yaml
          **/application*.properties
        
      
      
        ${basedir}/src/main/resources
        
          **/application*.yml
          **/application*.yaml
          **/application*.properties
        
      
    
    
      
        
          org.jetbrains.kotlin
          kotlin-maven-plugin
          ${kotlin.version}
          
            ${java.version}
            true
          
          
            
              compile
              compile
              
                compile
              
            
            
              test-compile
              test-compile
              
                test-compile
              
            
          
        
        
          org.apache.maven.plugins
          maven-compiler-plugin
          
            true
          
        
        
          org.apache.maven.plugins
          maven-failsafe-plugin
          
            
              
                integration-test
                verify
              
            
          
          
            ${project.build.outputDirectory}
          
        
        
          org.apache.maven.plugins
          maven-jar-plugin
          
            
              
                ${start-class}
                true
              
            
          
        
        
          org.apache.maven.plugins
          maven-war-plugin
          
            
              
                ${start-class}
                true
              
            
          
        
        
          org.apache.maven.plugins
          maven-resources-plugin
          
            ${project.build.sourceEncoding}
            
              ${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}
          
        
        
          org.apache.maven.plugins
          maven-shade-plugin
          
            true
            true
            
              
                *:*
                
                  META-INF/*.SF
                  META-INF/*.DSA
                  META-INF/*.RSA
                
              
            
          
          
            
              org.springframework.boot
              spring-boot-maven-plugin
              2.6.2
            
          
          
            
              package
              
                shade
              
              
                
                  
                    META-INF/spring.handlers
                  
                  
                    META-INF/spring.factories
                  
                  
                    META-INF/spring.schemas
                  
                  
                  
                    ${start-class}
                  
                
              
            
          
        
      
    
  

会发现,这个仅仅是中间加强的pom,实际上还有一层,而这个中间加强的pom声明了许多父pom的属性,比如作者、开源协议、github的URL等,另外也附上了打包构建的方式以及添加的Maven插件等。

再继续跟进去,这才到了真正的父pom:

查看代码

<?xml version="1.0" encoding="UTF-8"?>

  4.0.0
  org.springframework.boot
  spring-boot-dependencies
  2.6.2
  pom
  spring-boot-dependencies
  Spring Boot Dependencies
  https://spring.io/projects/spring-boot
  
    
      Apache License, Version 2.0
      https://www.apache.org/licenses/LICENSE-2.0
    
  
  
    
      Pivotal
      info@pivotal.io
      Pivotal Software, Inc.
      https://www.spring.io
    
  
  
    https://github.com/spring-projects/spring-boot
  
  
    5.16.3
    2.7.7
    1.9.93
    2.19.0
    1.9.7
    3.21.0
    4.0.6
    4.1.1
    3.2.0
    1.11.22
    2.9.3
    4.13.0
    1.5.1
    1.15
    2.9.0
    3.12.0
    1.6
    2.11.1
    3.2.4
    11.5.7.0
    1.0.11.RELEASE
    10.14.2.0
    4.2.7
    2.10.9.2
    3.9.9
    7.15.2
    3.0.0
    8.0.5
    2.3.31
    4.9.10
    3.0.4
    2.3.5
    1.2.6
    3.0.9
    2.8.9
    1.4.200
    2.2
    4.2.4
    2.2.1
    5.6.3.Final
    6.2.0.Final
    4.0.3
    2.5.2
    2.54.0
    4.1.5
    4.5.13
    5.1.2
    4.4.15
    5.1.2
    12.1.10.Final
    2.22
    2.13.1
    1.2.2
    1.3.5
    2.0.3
    1.1.6
    1.0.2
    1.6.7
    1.1.4
    2.2.3
    4.0.4
    1.2.7
    1.3.3
    2.0.2
    1.1.2
    2.1.6
    2.3.3
    1.4.2
    2.3.3
    3.1.6
    1.2.0
    1.3.2
    1.1.1
    2.3.1
    2.3.1
    2.0.1
    1.1.4
    1.0
    1.6.2
    1.1
    2.2
    1.3
    2.0.1.Final
    1.1
    1.2.0
    4.0.4.java8
    3.4.2.Final
    2.0.6.1
    3.7.1
    2.35
    9.0.52
    2.2.0.v201112011158
    1.1.10
    9.4.44.v20210927
    1.15
    1.2.15
    1.7.1
    3.14.15
    2.6.0
    2.4.7
    1.5.0
    1.2
    1.3.1
    4.13.2
    5.8.2
    3.0.0
    1.6.10
    1.5.2
    6.1.5.RELEASE
    4.5.0
    2.17.0
    1.2.9
    1.18.22
    2.7.4
    3.0.0
    3.3.0
    3.1.0
    3.8.1
    3.2.0
    2.8.2
    3.0.0
    2.22.2
    3.2.0
    2.5.2
    3.2.2
    3.2.0
    3.3.1
    3.2.0
    3.2.4
    3.2.1
    2.22.2
    3.3.2
    1.8.1
    1.9.15
    4.0.0
    4.4.0
    9.4.1.jre8
    8.0.27
    1.9.22
    4.3.6
    4.1.72.Final
    2.0.46.Final
    3.14.9
    21.3.0.0
    1.2.2
    42.3.1
    0.12.0
    2.3.2
    5.0.0
    Arabba-SR11
    5.13.1
    0.4.0
    1.0.3
    2020.0.14
    4.4.0
    1.1.1
    1.3.8
    1.2.1
    2.2.21
    1.5.3
    3.141.59
    2.54.0
    4.7.6
    4.0.1
    1.7.32
    1.29
    8.8.2
    2.4.1
    4.3.4
    2021.1.0
    5.3.14
    1.4.0
    5.5.7
    2.8.1
    2.3.5.RELEASE
    2.0.5.RELEASE
    1.3.1
    5.6.1
    2021.1.1
    3.1.2
    3.36.0.3
    1.6.7
    3.0.14.RELEASE
    2.0.1
    3.0.4.RELEASE
    3.0.4.RELEASE
    3.0.0
    9.0.56
    4.0.14
    2.2.14.Final
    2.8.1
    0.48
    1.6.3
    1.0.2
    2.8.4
  
  
    
      
        org.apache.activemq
        activemq-amqp
        ${activemq.version}
      
      
        org.apache.activemq
        activemq-blueprint
        ${activemq.version}
      
      
        org.apache.activemq
        activemq-broker
        ${activemq.version}
      
      
        org.apache.activemq
        activemq-camel
        ${activemq.version}
      
      
        org.apache.activemq
        activemq-client
        ${activemq.version}
      
      
        org.apache.activemq
        activemq-console
        ${activemq.version}
        
          
            commons-logging
            commons-logging
          
        
      
      
        org.apache.activemq
        activemq-http
        ${activemq.version}
      
      
        org.apache.activemq
        activemq-jaas
        ${activemq.version}
      
      
        org.apache.activemq
        activemq-jdbc-store
        ${activemq.version}
      
      
        org.apache.activemq
        activemq-jms-pool
        ${activemq.version}
      
      
        org.apache.activemq
        activemq-kahadb-store
        ${activemq.version}
      
      
        org.apache.activemq
        activemq-karaf
        ${activemq.version}
      
      
        org.apache.activemq
        activemq-leveldb-store
        ${activemq.version}
        
          
            commons-logging
            commons-logging
          
        
      
      
        org.apache.activemq
        activemq-log4j-appender
        ${activemq.version}
      
      
        org.apache.activemq
        activemq-mqtt
        ${activemq.version}
      
      
        org.apache.activemq
        activemq-openwire-generator
        ${activemq.version}
      
      
        org.apache.activemq
        activemq-openwire-legacy
        ${activemq.version}
      
      
        org.apache.activemq
        activemq-osgi
        ${activemq.version}
      
      
        org.apache.activemq
        activemq-partition
        ${activemq.version}
      
      
        org.apache.activemq
        activemq-pool
        ${activemq.version}
      
      
        org.apache.activemq
        activemq-ra
        ${activemq.version}
      
      
        org.apache.activemq
        activemq-run
        ${activemq.version}
      
      
        org.apache.activemq
        activemq-runtime-config
        ${activemq.version}
      
      
        org.apache.activemq
        activemq-shiro
        ${activemq.version}
      
      
        org.apache.activemq
        activemq-spring
        ${activemq.version}
        
          
            commons-logging
            commons-logging
          
        
      
      
        org.apache.activemq
        activemq-stomp
        ${activemq.version}
      
      
        org.apache.activemq
        activemq-web
        ${activemq.version}
      
      
        antlr
        antlr
        ${antlr2.version}
      
      
        com.google.appengine
        appengine-api-1.0-sdk
        ${appengine-sdk.version}
      
      
        org.apache.activemq
        artemis-amqp-protocol
        ${artemis.version}
      
      
        org.apache.activemq
        artemis-commons
        ${artemis.version}
        
          
            commons-logging
            commons-logging
          
        
      
      
        org.apache.activemq
        artemis-core-client
        ${artemis.version}
        
          
            org.apache.geronimo.specs
            geronimo-json_1.0_spec
          
        
      
      
        org.apache.activemq
        artemis-jms-client
        ${artemis.version}
        
          
            org.apache.geronimo.specs
            geronimo-json_1.0_spec
          
        
      
      
        org.apache.activemq
        artemis-jms-server
        ${artemis.version}
        
          
            org.apache.geronimo.specs
            geronimo-json_1.0_spec
          
        
      
      
        org.apache.activemq
        artemis-journal
        ${artemis.version}
      
      
        org.apache.activemq
        artemis-selector
        ${artemis.version}
      
      
        org.apache.activemq
        artemis-server
        ${artemis.version}
        
          
            commons-logging
            commons-logging
          
          
            org.apache.geronimo.specs
            geronimo-json_1.0_spec
          
        
      
      
        org.apache.activemq
        artemis-service-extensions
        ${artemis.version}
      
      
        org.aspectj
        aspectjrt
        ${aspectj.version}
      
      
        org.aspectj
        aspectjtools
        ${aspectj.version}
      
      
        org.aspectj
        aspectjweaver
        ${aspectj.version}
      
      
        org.assertj
        assertj-core
        ${assertj.version}
      
      
        com.atomikos
        transactions-jdbc
        ${atomikos.version}
      
      
        com.atomikos
        transactions-jms
        ${atomikos.version}
      
      
        com.atomikos
        transactions-jta
        ${atomikos.version}
      
      
        org.awaitility
        awaitility
        ${awaitility.version}
      
      
        org.awaitility
        awaitility-groovy
        ${awaitility.version}
      
      
        org.awaitility
        awaitility-kotlin
        ${awaitility.version}
      
      
        org.awaitility
        awaitility-scala
        ${awaitility.version}
      
      
        net.bytebuddy
        byte-buddy
        ${byte-buddy.version}
      
      
        net.bytebuddy
        byte-buddy-agent
        ${byte-buddy.version}
      
      
        com.github.ben-manes.caffeine
        caffeine
        ${caffeine.version}
      
      
        com.github.ben-manes.caffeine
        guava
        ${caffeine.version}
      
      
        com.github.ben-manes.caffeine
        jcache
        ${caffeine.version}
      
      
        com.github.ben-manes.caffeine
        simulator
        ${caffeine.version}
      
      
        com.datastax.oss
        java-driver-core
        ${cassandra-driver.version}
        
          
            org.slf4j
            jcl-over-slf4j
          
        
      
      
        com.fasterxml
        classmate
        ${classmate.version}
      
      
        commons-codec
        commons-codec
        ${commons-codec.version}
      
      
        org.apache.commons
        commons-dbcp2
        ${commons-dbcp2.version}
        
          
            commons-logging
            commons-logging
          
        
      
      
        org.apache.commons
        commons-lang3
        ${commons-lang3.version}
      
      
        commons-pool
        commons-pool
        ${commons-pool.version}
      
      
        org.apache.commons
        commons-pool2
        ${commons-pool2.version}
      
      
        com.couchbase.client
        java-client
        ${couchbase-client.version}
      
      
        com.ibm.db2
        jcc
        ${db2-jdbc.version}
      
      
        io.spring.gradle
        dependency-management-plugin
        ${dependency-management-plugin.version}
      
      
        org.apache.derby
        derby
        ${derby.version}
      
      
        org.apache.derby
        derbyclient
        ${derby.version}
      
      
        net.sf.ehcache
        ehcache
        ${ehcache.version}
      
      
        org.ehcache
        ehcache
        ${ehcache3.version}
      
      
        org.ehcache
        ehcache-clustered
        ${ehcache3.version}
      
      
        org.ehcache
        ehcache-transactions
        ${ehcache3.version}
      
      
        org.elasticsearch
        elasticsearch
        ${elasticsearch.version}
      
      
        org.elasticsearch.client
        transport
        ${elasticsearch.version}
      
      
        org.elasticsearch.client
        elasticsearch-rest-client
        ${elasticsearch.version}
        
          
            commons-logging
            commons-logging
          
        
      
      
        org.elasticsearch.client
        elasticsearch-rest-client-sniffer
        ${elasticsearch.version}
        
          
            commons-logging
            commons-logging
          
        
      
      
        org.elasticsearch.client
        elasticsearch-rest-high-level-client
        ${elasticsearch.version}
      
      
        org.elasticsearch.distribution.integ-test-zip
        elasticsearch
        ${elasticsearch.version}
        zip
      
      
        org.elasticsearch.plugin
        transport-netty4-client
        ${elasticsearch.version}
      
      
        de.flapdoodle.embed
        de.flapdoodle.embed.mongo
        ${embedded-mongo.version}
      
      
        org.flywaydb
        flyway-core
        ${flyway.version}
      
      
        org.freemarker
        freemarker
        ${freemarker.version}
      
      
        org.glassfish
        jakarta.el
        ${glassfish-el.version}
      
      
        org.glassfish.jaxb
        codemodel
        ${glassfish-jaxb.version}
      
      
        org.glassfish.jaxb
        codemodel-annotation-compiler
        ${glassfish-jaxb.version}
      
      
        org.glassfish.jaxb
        jaxb-jxc
        ${glassfish-jaxb.version}
      
      
        org.glassfish.jaxb
        jaxb-runtime
        ${glassfish-jaxb.version}
      
      
        org.glassfish.jaxb
        jaxb-xjc
        ${glassfish-jaxb.version}
      
      
        org.glassfish.jaxb
        txw2
        ${glassfish-jaxb.version}
      
      
        org.glassfish.jaxb
        txwc2
        ${glassfish-jaxb.version}
      
      
        org.glassfish.jaxb
        xsom
        ${glassfish-jaxb.version}
      
      
        org.glassfish.web
        jakarta.servlet.jsp.jstl
        ${glassfish-jstl.version}
      
      
        com.google.code.gson
        gson
        ${gson.version}
      
      
        com.h2database
        h2
        ${h2.version}
      
      
        org.hamcrest
        hamcrest
        ${hamcrest.version}
      
      
        org.hamcrest
        hamcrest-core
        ${hamcrest.version}
      
      
        org.hamcrest
        hamcrest-library
        ${hamcrest.version}
      
      
        com.hazelcast
        hazelcast
        ${hazelcast.version}
      
      
        com.hazelcast
        hazelcast-spring
        ${hazelcast.version}
      
      
        com.hazelcast
        hazelcast-hibernate52
        ${hazelcast-hibernate5.version}
      
      
        com.hazelcast
        hazelcast-hibernate53
        ${hazelcast-hibernate5.version}
      
      
        org.hibernate
        hibernate-c3p0
        ${hibernate.version}
      
      
        org.hibernate
        hibernate-core
        ${hibernate.version}
      
      
        org.hibernate
        hibernate-ehcache
        ${hibernate.version}
      
      
        org.hibernate
        hibernate-entitymanager
        ${hibernate.version}
      
      
        org.hibernate
        hibernate-envers
        ${hibernate.version}
      
      
        org.hibernate
        hibernate-hikaricp
        ${hibernate.version}
      
      
        org.hibernate
        hibernate-java8
        ${hibernate.version}
      
      
        org.hibernate
        hibernate-jcache
        ${hibernate.version}
      
      
        org.hibernate
        hibernate-jpamodelgen
        ${hibernate.version}
      
      
        org.hibernate
        hibernate-micrometer
        ${hibernate.version}
      
      
        org.hibernate
        hibernate-proxool
        ${hibernate.version}
      
      
        org.hibernate
        hibernate-spatial
        ${hibernate.version}
      
      
        org.hibernate
        hibernate-testing
        ${hibernate.version}
      
      
        org.hibernate
        hibernate-vibur
        ${hibernate.version}
      
      
        org.hibernate.validator
        hibernate-validator
        ${hibernate-validator.version}
      
      
        org.hibernate.validator
        hibernate-validator-annotation-processor
        ${hibernate-validator.version}
      
      
        com.zaxxer
        HikariCP
        ${hikaricp.version}
      
      
        org.hsqldb
        hsqldb
        ${hsqldb.version}
      
      
        net.sourceforge.htmlunit
        htmlunit
        ${htmlunit.version}
        
          
            commons-logging
            commons-logging
          
        
      
      
        org.apache.httpcomponents
        httpasyncclient
        ${httpasyncclient.version}
        
          
            commons-logging
            commons-logging
          
        
      
      
        org.apache.httpcomponents
        fluent-hc
        ${httpclient.version}
      
      
        org.apache.httpcomponents
        httpclient
        ${httpclient.version}
        
          
            commons-logging
            commons-logging
          
        
      
      
        org.apache.httpcomponents
        httpclient-cache
        ${httpclient.version}
      
      
        org.apache.httpcomponents
        httpclient-osgi
        ${httpclient.version}
      
      
        org.apache.httpcomponents
        httpclient-win
        ${httpclient.version}
      
      
        org.apache.httpcomponents
        httpmime
        ${httpclient.version}
      
      
        org.apache.httpcomponents.client5
        httpclient5
        ${httpclient5.version}
      
      
        org.apache.httpcomponents.client5
        httpclient5-cache
        ${httpclient5.version}
      
      
        org.apache.httpcomponents.client5
        httpclient5-fluent
        ${httpclient5.version}
      
      
        org.apache.httpcomponents.client5
        httpclient5-win
        ${httpclient5.version}
      
      
        org.apache.httpcomponents
        httpcore
        ${httpcore.version}
      
      
        org.apache.httpcomponents
        httpcore-nio
        ${httpcore.version}
      
      
        org.apache.httpcomponents.core5
        httpcore5
        ${httpcore5.version}
      
      
        org.apache.httpcomponents.core5
        httpcore5-h2
        ${httpcore5.version}
      
      
        org.apache.httpcomponents.core5
        httpcore5-reactive
        ${httpcore5.version}
      
      
        org.influxdb
        influxdb-java
        ${influxdb-java.version}
      
      
        com.sun.activation
        jakarta.activation
        ${jakarta-activation.version}
      
      
        jakarta.activation
        jakarta.activation-api
        ${jakarta-activation.version}
      
      
        jakarta.annotation
        jakarta.annotation-api
        ${jakarta-annotation.version}
      
      
        jakarta.jms
        jakarta.jms-api
        ${jakarta-jms.version}
      
      
        jakarta.json
        jakarta.json-api
        ${jakarta-json.version}
      
      
        jakarta.json.bind
        jakarta.json.bind-api
        ${jakarta-json-bind.version}
      
      
        jakarta.mail
        jakarta.mail-api
        ${jakarta-mail.version}
      
      
        jakarta.management.j2ee
        jakarta.management.j2ee-api
        ${jakarta-management.version}
      
      
        jakarta.persistence
        jakarta.persistence-api
        ${jakarta-persistence.version}
      
      
        jakarta.servlet
        jakarta.servlet-api
        ${jakarta-servlet.version}
      
      
        jakarta.servlet.jsp.jstl
        jakarta.servlet.jsp.jstl-api
        ${jakarta-servlet-jsp-jstl.version}
      
      
        jakarta.transaction
        jakarta.transaction-api
        ${jakarta-transaction.version}
      
      
        jakarta.validation
        jakarta.validation-api
        ${jakarta-validation.version}
      
      
        jakarta.websocket
        jakarta.websocket-api
        ${jakarta-websocket.version}
      
      
        jakarta.ws.rs
        jakarta.ws.rs-api
        ${jakarta-ws-rs.version}
      
      
        jakarta.xml.bind
        jakarta.xml.bind-api
        ${jakarta-xml-bind.version}
      
      
        jakarta.xml.soap
        jakarta.xml.soap-api
        ${jakarta-xml-soap.version}
      
      
        jakarta.xml.ws
        jakarta.xml.ws-api
        ${jakarta-xml-ws.version}
      
      
        org.codehaus.janino
        commons-compiler
        ${janino.version}
      
      
        org.codehaus.janino
        commons-compiler-jdk
        ${janino.version}
      
      
        org.codehaus.janino
        janino
        ${janino.version}
      
      
        javax.activation
        javax.activation-api
        ${javax-activation.version}
      
      
        javax.annotation
        javax.annotation-api
        ${javax-annotation.version}
      
      
        javax.cache
        cache-api
        ${javax-cache.version}
      
      
        javax.xml.bind
        jaxb-api
        ${javax-jaxb.version}
      
      
        javax.xml.ws
        jaxws-api
        ${javax-jaxws.version}
      
      
        javax.jms
        javax.jms-api
        ${javax-jms.version}
      
      
        javax.json
        javax.json-api
        ${javax-json.version}
      
      
        javax.json.bind
        javax.json.bind-api
        ${javax-jsonb.version}
      
      
        javax.mail
        javax.mail-api
        ${javax-mail.version}
      
      
        javax.money
        money-api
        ${javax-money.version}
      
      
        javax.persistence
        javax.persistence-api
        ${javax-persistence.version}
      
      
        javax.transaction
        javax.transaction-api
        ${javax-transaction.version}
      
      
        javax.validation
        validation-api
        ${javax-validation.version}
      
      
        javax.websocket
        javax.websocket-api
        ${javax-websocket.version}
      
      
        jaxen
        jaxen
        ${jaxen.version}
      
      
        org.firebirdsql.jdbc
        jaybird
        ${jaybird.version}
      
      
        org.firebirdsql.jdbc
        jaybird-jdk18
        ${jaybird.version}
      
      
        org.jboss.logging
        jboss-logging
        ${jboss-logging.version}
      
      
        org.jdom
        jdom2
        ${jdom2.version}
      
      
        redis.clients
        jedis
        ${jedis.version}
      
      
        org.mortbay.jasper
        apache-el
        ${jetty-el.version}
      
      
        org.eclipse.jetty.orbit
        javax.servlet.jsp
        ${jetty-jsp.version}
      
      
        org.eclipse.jetty
        jetty-reactive-httpclient
        ${jetty-reactive-httpclient.version}
      
      
        com.samskivert
        jmustache
        ${jmustache.version}
      
      
        org.apache.johnzon
        johnzon-core
        ${johnzon.version}
      
      
        org.apache.johnzon
        johnzon-jaxrs
        ${johnzon.version}
      
      
        org.apache.johnzon
        johnzon-jsonb
        ${johnzon.version}
      
      
        org.apache.johnzon
        johnzon-jsonb-extras
        ${johnzon.version}
      
      
        org.apache.johnzon
        johnzon-jsonschema
        ${johnzon.version}
      
      
        org.apache.johnzon
        johnzon-mapper
        ${johnzon.version}
      
      
        org.apache.johnzon
        johnzon-websocket
        ${johnzon.version}
      
      
        org.jolokia
        jolokia-core
        ${jolokia.version}
      
      
        org.jooq
        jooq
        ${jooq.version}
      
      
        org.jooq
        jooq-codegen
        ${jooq.version}
      
      
        org.jooq
        jooq-kotlin
        ${jooq.version}
      
      
        org.jooq
        jooq-meta
        ${jooq.version}
      
      
        com.jayway.jsonpath
        json-path
        ${json-path.version}
      
      
        com.jayway.jsonpath
        json-path-assert
        ${json-path.version}
      
      
        net.minidev
        json-smart
        ${json-smart.version}
      
      
        org.skyscreamer
        jsonassert
        ${jsonassert.version}
      
      
        javax.servlet
        jstl
        ${jstl.version}
      
      
        net.sourceforge.jtds
        jtds
        ${jtds.version}
      
      
        junit
        junit
        ${junit.version}
      
      
        org.apache.kafka
        connect-api
        ${kafka.version}
      
      
        org.apache.kafka
        connect-basic-auth-extension
        ${kafka.version}
      
      
        org.apache.kafka
        connect-file
        ${kafka.version}
      
      
        org.apache.kafka
        connect-json
        ${kafka.version}
      
      
        org.apache.kafka
        connect-runtime
        ${kafka.version}
      
      
        org.apache.kafka
        connect-transforms
        ${kafka.version}
      
      
        org.apache.kafka
        kafka-clients
        ${kafka.version}
      
      
        org.apache.kafka
        kafka-metadata
        ${kafka.version}
      
      
        org.apache.kafka
        kafka-log4j-appender
        ${kafka.version}
      
      
        org.apache.kafka
        kafka-streams
        ${kafka.version}
      
      
        org.apache.kafka
        kafka-streams-scala_2.12
        ${kafka.version}
      
      
        org.apache.kafka
        kafka-streams-scala_2.13
        ${kafka.version}
      
      
        org.apache.kafka
        kafka-streams-test-utils
        ${kafka.version}
      
      
        org.apache.kafka
        kafka-tools
        ${kafka.version}
      
      
        org.apache.kafka
        kafka_2.12
        ${kafka.version}
      
      
        org.apache.kafka
        kafka_2.13
        ${kafka.version}
      
      
        io.lettuce
        lettuce-core
        ${lettuce.version}
      
      
        org.liquibase
        liquibase-core
        ${liquibase.version}
      
      
        ch.qos.logback
        logback-access
        ${logback.version}
      
      
        ch.qos.logback
        logback-classic
        ${logback.version}
      
      
        ch.qos.logback
        logback-core
        ${logback.version}
      
      
        org.projectlombok
        lombok
        ${lombok.version}
      
      
        org.mariadb.jdbc
        mariadb-java-client
        ${mariadb.version}
      
      
        io.micrometer
        micrometer-registry-stackdriver
        ${micrometer.version}
        
          
            javax.annotation
            javax.annotation-api
          
        
      
      
        org.jvnet.mimepull
        mimepull
        ${mimepull.version}
      
      
        org.mockito
        mockito-core
        ${mockito.version}
      
      
        org.mockito
        mockito-inline
        ${mockito.version}
      
      
        org.mockito
        mockito-junit-jupiter
        ${mockito.version}
      
      
        org.mongodb
        bson
        ${mongodb.version}
      
      
        org.mongodb
        mongodb-driver-core
        ${mongodb.version}
      
      
        org.mongodb
        mongodb-driver-legacy
        ${mongodb.version}
      
      
        org.mongodb
        mongodb-driver-reactivestreams
        ${mongodb.version}
      
      
        org.mongodb
        mongodb-driver-sync
        ${mongodb.version}
      
      
        com.microsoft.sqlserver
        mssql-jdbc
        ${mssql-jdbc.version}
      
      
        mysql
        mysql-connector-java
        ${mysql.version}
        
          
            com.google.protobuf
            protobuf-java
          
        
      
      
        net.sourceforge.nekohtml
        nekohtml
        ${nekohtml.version}
      
      
        org.neo4j.driver
        neo4j-java-driver
        ${neo4j-java-driver.version}
      
      
        io.netty
        netty-tcnative
        ${netty-tcnative.version}
      
      
        io.netty
        netty-tcnative-boringssl-static
        ${netty-tcnative.version}
      
      
        com.squareup.okhttp3
        logging-interceptor
        ${okhttp3.version}
      
      
        com.squareup.okhttp3
        mockwebserver
        ${okhttp3.version}
      
      
        com.squareup.okhttp3
        okcurl
        ${okhttp3.version}
      
      
        com.squareup.okhttp3
        okhttp
        ${okhttp3.version}
      
      
        com.squareup.okhttp3
        okhttp-dnsoverhttps
        ${okhttp3.version}
      
      
        com.squareup.okhttp3
        okhttp-sse
        ${okhttp3.version}
      
      
        com.squareup.okhttp3
        okhttp-testing-support
        ${okhttp3.version}
      
      
        com.squareup.okhttp3
        okhttp-tls
        ${okhttp3.version}
      
      
        com.squareup.okhttp3
        okhttp-urlconnection
        ${okhttp3.version}
      
      
        org.messaginghub
        pooled-jms
        ${pooled-jms.version}
      
      
        org.postgresql
        postgresql
        ${postgresql.version}
      
      
        org.quartz-scheduler
        quartz
        ${quartz.version}
        
          
            com.mchange
            c3p0
          
          
            com.zaxxer
            *
          
        
      
      
        org.quartz-scheduler
        quartz-jobs
        ${quartz.version}
      
      
        com.rabbitmq
        amqp-client
        ${rabbit-amqp-client.version}
      
      
        com.rabbitmq
        stream-client
        ${rabbit-stream-client.version}
      
      
        org.reactivestreams
        reactive-streams
        ${reactive-streams.version}
      
      
        io.rest-assured
        json-path
        ${rest-assured.version}
      
      
        io.rest-assured
        json-schema-validator
        ${rest-assured.version}
      
      
        io.rest-assured
        rest-assured
        ${rest-assured.version}
      
      
        io.rest-assured
        scala-support
        ${rest-assured.version}
      
      
        io.rest-assured
        spring-mock-mvc
        ${rest-assured.version}
      
      
        io.rest-assured
        spring-web-test-client
        ${rest-assured.version}
      
      
        io.rest-assured
        xml-path
        ${rest-assured.version}
      
      
        io.reactivex
        rxjava
        ${rxjava.version}
      
      
        io.reactivex
        rxjava-reactive-streams
        ${rxjava-adapter.version}
      
      
        io.reactivex.rxjava2
        rxjava
        ${rxjava2.version}
      
      
        org.springframework.boot
        spring-boot
        2.6.2
      
      
        org.springframework.boot
        spring-boot-test
        2.6.2
      
      
        org.springframework.boot
        spring-boot-test-autoconfigure
        2.6.2
      
      
        org.springframework.boot
        spring-boot-actuator
        2.6.2
      
      
        org.springframework.boot
        spring-boot-actuator-autoconfigure
        2.6.2
      
      
        org.springframework.boot
        spring-boot-autoconfigure
        2.6.2
      
      
        org.springframework.boot
        spring-boot-autoconfigure-processor
        2.6.2
      
      
        org.springframework.boot
        spring-boot-buildpack-platform
        2.6.2
      
      
        org.springframework.boot
        spring-boot-configuration-metadata
        2.6.2
      
      
        org.springframework.boot
        spring-boot-configuration-processor
        2.6.2
      
      
        org.springframework.boot
        spring-boot-devtools
        2.6.2
      
      
        org.springframework.boot
        spring-boot-jarmode-layertools
        2.6.2
      
      
        org.springframework.boot
        spring-boot-loader
        2.6.2
      
      
        org.springframework.boot
        spring-boot-loader-tools
        2.6.2
      
      
        org.springframework.boot
        spring-boot-properties-migrator
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-activemq
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-actuator
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-amqp
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-aop
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-artemis
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-batch
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-cache
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-data-cassandra
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-data-cassandra-reactive
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-data-couchbase
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-data-couchbase-reactive
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-data-elasticsearch
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-data-jdbc
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-data-jpa
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-data-ldap
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-data-mongodb
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-data-mongodb-reactive
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-data-r2dbc
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-data-redis
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-data-redis-reactive
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-data-neo4j
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-data-rest
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-freemarker
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-groovy-templates
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-hateoas
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-integration
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-jdbc
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-jersey
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-jetty
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-jooq
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-json
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-jta-atomikos
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-log4j2
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-logging
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-mail
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-mustache
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-oauth2-client
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-oauth2-resource-server
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-quartz
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-reactor-netty
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-rsocket
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-security
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-test
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-thymeleaf
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-tomcat
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-undertow
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-validation
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-web
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-webflux
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-websocket
        2.6.2
      
      
        org.springframework.boot
        spring-boot-starter-web-services
        2.6.2
      
      
        com.sun.xml.messaging.saaj
        saaj-impl
        ${saaj-impl.version}
      
      
        org.seleniumhq.selenium
        selenium-api
        ${selenium.version}
      
      
        org.seleniumhq.selenium
        selenium-chrome-driver
        ${selenium.version}
      
      
        org.seleniumhq.selenium
        selenium-edge-driver
        ${selenium.version}
      
      
        org.seleniumhq.selenium
        selenium-firefox-driver
        ${selenium.version}
      
      
        org.seleniumhq.selenium
        selenium-ie-driver
        ${selenium.version}
      
      
        org.seleniumhq.selenium
        selenium-java
        ${selenium.version}
      
      
        org.seleniumhq.selenium
        selenium-opera-driver
        ${selenium.version}
      
      
        org.seleniumhq.selenium
        selenium-remote-driver
        ${selenium.version}
      
      
        org.seleniumhq.selenium
        selenium-safari-driver
        ${selenium.version}
      
      
        org.seleniumhq.selenium
        selenium-support
        ${selenium.version}
      
      
        org.seleniumhq.selenium
        htmlunit-driver
        ${selenium-htmlunit.version}
      
      
        com.sendgrid
        sendgrid-java
        ${sendgrid.version}
      
      
        javax.servlet
        javax.servlet-api
        ${servlet-api.version}
      
      
        org.slf4j
        jcl-over-slf4j
        ${slf4j.version}
      
      
        org.slf4j
        jul-to-slf4j
        ${slf4j.version}
      
      
        org.slf4j
        log4j-over-slf4j
        ${slf4j.version}
      
      
        org.slf4j
        slf4j-api
        ${slf4j.version}
      
      
        org.slf4j
        slf4j-ext
        ${slf4j.version}
      
      
        org.slf4j
        slf4j-jcl
        ${slf4j.version}
      
      
        org.slf4j
        slf4j-jdk14
        ${slf4j.version}
      
      
        org.slf4j
        slf4j-log4j12
        ${slf4j.version}
      
      
        org.slf4j
        slf4j-nop
        ${slf4j.version}
      
      
        org.slf4j
        slf4j-simple
        ${slf4j.version}
      
      
        org.yaml
        snakeyaml
        ${snakeyaml.version}
      
      
        org.apache.solr
        solr-analysis-extras
        ${solr.version}
      
      
        org.apache.solr
        solr-analytics
        ${solr.version}
      
      
        org.apache.solr
        solr-cell
        ${solr.version}
      
      
        org.apache.solr
        solr-core
        ${solr.version}
      
      
        org.apache.solr
        solr-dataimporthandler
        ${solr.version}
      
      
        org.apache.solr
        solr-dataimporthandler-extras
        ${solr.version}
      
      
        org.apache.solr
        solr-langid
        ${solr.version}
      
      
        org.apache.solr
        solr-ltr
        ${solr.version}
      
      
        org.apache.solr
        solr-solrj
        ${solr.version}
        
          
            org.slf4j
            jcl-over-slf4j
          
        
      
      
        org.apache.solr
        solr-test-framework
        ${solr.version}
      
      
        org.apache.solr
        solr-velocity
        ${solr.version}
      
      
        org.springframework.amqp
        spring-amqp
        ${spring-amqp.version}
      
      
        org.springframework.amqp
        spring-rabbit
        ${spring-amqp.version}
      
      
        org.springframework.amqp
        spring-rabbit-stream
        ${spring-amqp.version}
      
      
        org.springframework.amqp
        spring-rabbit-junit
        ${spring-amqp.version}
      
      
        org.springframework.amqp
        spring-rabbit-test
        ${spring-amqp.version}
      
      
        org.springframework.batch
        spring-batch-core
        ${spring-batch.version}
      
      
        org.springframework.batch
        spring-batch-infrastructure
        ${spring-batch.version}
      
      
        org.springframework.batch
        spring-batch-integration
        ${spring-batch.version}
      
      
        org.springframework.batch
        spring-batch-test
        ${spring-batch.version}
      
      
        org.springframework.hateoas
        spring-hateoas
        ${spring-hateoas.version}
      
      
        org.springframework.kafka
        spring-kafka
        ${spring-kafka.version}
      
      
        org.springframework.kafka
        spring-kafka-test
        ${spring-kafka.version}
      
      
        org.springframework.ldap
        spring-ldap-core
        ${spring-ldap.version}
      
      
        org.springframework.ldap
        spring-ldap-core-tiger
        ${spring-ldap.version}
      
      
        org.springframework.ldap
        spring-ldap-ldif-batch
        ${spring-ldap.version}
      
      
        org.springframework.ldap
        spring-ldap-ldif-core
        ${spring-ldap.version}
      
      
        org.springframework.ldap
        spring-ldap-odm
        ${spring-ldap.version}
      
      
        org.springframework.ldap
        spring-ldap-test
        ${spring-ldap.version}
      
      
        org.springframework.restdocs
        spring-restdocs-asciidoctor
        ${spring-restdocs.version}
      
      
        org.springframework.restdocs
        spring-restdocs-core
        ${spring-restdocs.version}
      
      
        org.springframework.restdocs
        spring-restdocs-mockmvc
        ${spring-restdocs.version}
      
      
        org.springframework.restdocs
        spring-restdocs-restassured
        ${spring-restdocs.version}
      
      
        org.springframework.restdocs
        spring-restdocs-webtestclient
        ${spring-restdocs.version}
      
      
        org.springframework.retry
        spring-retry
        ${spring-retry.version}
      
      
        org.springframework.ws
        spring-ws-core
        ${spring-ws.version}
      
      
        org.springframework.ws
        spring-ws-security
        ${spring-ws.version}
      
      
        org.springframework.ws
        spring-ws-support
        ${spring-ws.version}
      
      
        org.springframework.ws
        spring-ws-test
        ${spring-ws.version}
      
      
        org.springframework.ws
        spring-xml
        ${spring-ws.version}
      
      
        org.xerial
        sqlite-jdbc
        ${sqlite-jdbc.version}
      
      
        com.sun.mail
        jakarta.mail
        ${sun-mail.version}
      
      
        org.thymeleaf
        thymeleaf
        ${thymeleaf.version}
      
      
        org.thymeleaf
        thymeleaf-spring5
        ${thymeleaf.version}
      
      
        com.github.mxab.thymeleaf.extras
        thymeleaf-extras-data-attribute
        ${thymeleaf-extras-data-attribute.version}
      
      
        org.thymeleaf.extras
        thymeleaf-extras-java8time
        ${thymeleaf-extras-java8time.version}
      
      
        org.thymeleaf.extras
        thymeleaf-extras-springsecurity5
        ${thymeleaf-extras-springsecurity.version}
      
      
        nz.net.ultraq.thymeleaf
        thymeleaf-layout-dialect
        ${thymeleaf-layout-dialect.version}
      
      
        org.apache.tomcat
        tomcat-annotations-api
        ${tomcat.version}
      
      
        org.apache.tomcat
        tomcat-jdbc
        ${tomcat.version}
      
      
        org.apache.tomcat
        tomcat-jsp-api
        ${tomcat.version}
      
      
        org.apache.tomcat.embed
        tomcat-embed-core
        ${tomcat.version}
      
      
        org.apache.tomcat.embed
        tomcat-embed-el
        ${tomcat.version}
      
      
        org.apache.tomcat.embed
        tomcat-embed-jasper
        ${tomcat.version}
      
      
        org.apache.tomcat.embed
        tomcat-embed-websocket
        ${tomcat.version}
      
      
        com.unboundid
        unboundid-ldapsdk
        ${unboundid-ldapsdk.version}
      
      
        io.undertow
        undertow-core
        ${undertow.version}
      
      
        io.undertow
        undertow-servlet
        ${undertow.version}
      
      
        io.undertow
        undertow-websockets-jsr
        ${undertow.version}
      
      
        org.webjars
        webjars-locator-core
        ${webjars-locator-core.version}
      
      
        wsdl4j
        wsdl4j
        ${wsdl4j.version}
      
      
        org.xmlunit
        xmlunit-assertj
        ${xmlunit2.version}
      
      
        org.xmlunit
        xmlunit-core
        ${xmlunit2.version}
      
      
        org.xmlunit
        xmlunit-legacy
        ${xmlunit2.version}
      
      
        org.xmlunit
        xmlunit-matchers
        ${xmlunit2.version}
      
      
        org.xmlunit
        xmlunit-placeholders
        ${xmlunit2.version}
      
      
        com.datastax.oss
        java-driver-bom
        ${cassandra-driver.version}
        pom
        import
      
      
        io.dropwizard.metrics
        metrics-bom
        ${dropwizard-metrics.version}
        pom
        import
      
      
        org.codehaus.groovy
        groovy-bom
        ${groovy.version}
        pom
        import
      
      
        org.infinispan
        infinispan-bom
        ${infinispan.version}
        pom
        import
      
      
        com.fasterxml.jackson
        jackson-bom
        ${jackson-bom.version}
        pom
        import
      
      
        org.glassfish.jersey
        jersey-bom
        ${jersey.version}
        pom
        import
      
      
        org.eclipse.jetty
        jetty-bom
        ${jetty.version}
        pom
        import
      
      
        org.junit
        junit-bom
        ${junit-jupiter.version}
        pom
        import
      
      
        org.jetbrains.kotlin
        kotlin-bom
        ${kotlin.version}
        pom
        import
      
      
        org.jetbrains.kotlinx
        kotlinx-coroutines-bom
        ${kotlin-coroutines.version}
        pom
        import
      
      
        org.apache.logging.log4j
        log4j-bom
        ${log4j2.version}
        pom
        import
      
      
        io.micrometer
        micrometer-bom
        ${micrometer.version}
        pom
        import
      
      
        io.netty
        netty-bom
        ${netty.version}
        pom
        import
      
      
        com.oracle.database.jdbc
        ojdbc-bom
        ${oracle-database.version}
        pom
        import
      
      
        io.prometheus
        simpleclient_bom
        ${prometheus-client.version}
        pom
        import
      
      
        com.querydsl
        querydsl-bom
        ${querydsl.version}
        pom
        import
      
      
        io.r2dbc
        r2dbc-bom
        ${r2dbc-bom.version}
        pom
        import
      
      
        io.projectreactor
        reactor-bom
        ${reactor-bom.version}
        pom
        import
      
      
        io.rsocket
        rsocket-bom
        ${rsocket.version}
        pom
        import
      
      
        org.springframework.data
        spring-data-bom
        ${spring-data-bom.version}
        pom
        import
      
      
        org.springframework
        spring-framework-bom
        ${spring-framework.version}
        pom
        import
      
      
        org.springframework.integration
        spring-integration-bom
        ${spring-integration.version}
        pom
        import
      
      
        org.springframework.security
        spring-security-bom
        ${spring-security.version}
        pom
        import
      
      
        org.springframework.session
        spring-session-bom
        ${spring-session-bom.version}
        pom
        import
      
    
  
  
    
      
        
          org.codehaus.mojo
          build-helper-maven-plugin
          ${build-helper-maven-plugin.version}
        
        
          org.flywaydb
          flyway-maven-plugin
          ${flyway.version}
        
        
          pl.project13.maven
          git-commit-id-plugin
          ${git-commit-id-plugin.version}
        
        
          org.apache.johnzon
          johnzon-maven-plugin
          ${johnzon.version}
        
        
          org.jooq
          jooq-codegen-maven
          ${jooq.version}
        
        
          org.jetbrains.kotlin
          kotlin-maven-plugin
          ${kotlin.version}
        
        
          org.liquibase
          liquibase-maven-plugin
          ${liquibase.version}
        
        
          org.apache.maven.plugins
          maven-antrun-plugin
          ${maven-antrun-plugin.version}
        
        
          org.apache.maven.plugins
          maven-assembly-plugin
          ${maven-assembly-plugin.version}
        
        
          org.apache.maven.plugins
          maven-clean-plugin
          ${maven-clean-plugin.version}
        
        
          org.apache.maven.plugins
          maven-compiler-plugin
          ${maven-compiler-plugin.version}
        
        
          org.apache.maven.plugins
          maven-dependency-plugin
          ${maven-dependency-plugin.version}
        
        
          org.apache.maven.plugins
          maven-deploy-plugin
          ${maven-deploy-plugin.version}
        
        
          org.apache.maven.plugins
          maven-enforcer-plugin
          ${maven-enforcer-plugin.version}
        
        
          org.apache.maven.plugins
          maven-failsafe-plugin
          ${maven-failsafe-plugin.version}
        
        
          org.apache.maven.plugins
          maven-help-plugin
          ${maven-help-plugin.version}
        
        
          org.apache.maven.plugins
          maven-install-plugin
          ${maven-install-plugin.version}
        
        
          org.apache.maven.plugins
          maven-invoker-plugin
          ${maven-invoker-plugin.version}
        
        
          org.apache.maven.plugins
          maven-jar-plugin
          ${maven-jar-plugin.version}
        
        
          org.apache.maven.plugins
          maven-javadoc-plugin
          ${maven-javadoc-plugin.version}
        
        
          org.apache.maven.plugins
          maven-resources-plugin
          ${maven-resources-plugin.version}
        
        
          org.apache.maven.plugins
          maven-shade-plugin
          ${maven-shade-plugin.version}
        
        
          org.apache.maven.plugins
          maven-source-plugin
          ${maven-source-plugin.version}
        
        
          org.apache.maven.plugins
          maven-surefire-plugin
          ${maven-surefire-plugin.version}
        
        
          org.apache.maven.plugins
          maven-war-plugin
          ${maven-war-plugin.version}
        
        
          org.springframework.boot
          spring-boot-maven-plugin
          2.6.2
        
        
          org.codehaus.mojo
          versions-maven-plugin
          ${versions-maven-plugin.version}
        
        
          org.codehaus.mojo
          xml-maven-plugin
          ${xml-maven-plugin.version}
        
      
    
  

可以看到,这里把所有SpringBoot以来的基础库全部声明了,并且是一个版本仲裁中心,后续你要引用类似的库,不用再去声明版本了,这样减少了冲突,便于开发工具的统一。

2、各种starter

除了统一的父pom,我们还可以看到pom.xml里面声明的类似xxx-starter的maven依赖,这其实也是在做统一减少冲突,按照一类工具属性的维度,将相关的工具集做了捆绑,并且也做了标准版本的仲裁中心。比如我们看这个常见的


   org.springframework.boot
   spring-boot-starter-web

跟进去看一下

查看代码
<?xml version="1.0" encoding="UTF-8"?>

  
  
  
  
  
  4.0.0
  org.springframework.boot
  spring-boot-starter-web
  2.6.2
  spring-boot-starter-web
  Starter for building web, including RESTful, applications using Spring MVC. Uses Tomcat as the default embedded container
  https://spring.io/projects/spring-boot
  
    Pivotal Software, Inc.
    https://spring.io
  
  
    
      Apache License, Version 2.0
      https://www.apache.org/licenses/LICENSE-2.0
    
  
  
    
      Pivotal
      info@pivotal.io
      Pivotal Software, Inc.
      https://www.spring.io
    
  
  
    scm:git:git://github.com/spring-projects/spring-boot.git
    scm:git:ssh://git@github.com/spring-projects/spring-boot.git
    https://github.com/spring-projects/spring-boot
  
  
    GitHub
    https://github.com/spring-projects/spring-boot/issues
  
  
    
      org.springframework.boot
      spring-boot-starter
      2.6.2
      compile
    
    
      org.springframework.boot
      spring-boot-starter-json
      2.6.2
      compile
    
    
      org.springframework.boot
      spring-boot-starter-tomcat
      2.6.2
      compile
    
    
      org.springframework
      spring-web
      5.3.14
      compile
    
    
      org.springframework
      spring-webmvc
      5.3.14
      compile
    
  

我们可以看到,这个starter把所有跟web应用相关的依赖全部集中起来,包括嵌套的其他类似Tomcat的starter,还有spring-web,这里也可以看到,Spring-Boot还是基于Spring作为底层构建的。

总结:总的来说,SpringBoot的依赖配置就是靠这两个方面做了增强,目标都是一个简化配置,统一配置,减少冲突。父pom统一了基础配置,而各类starter按照各自的应用场景做了统一,这也看出了指责界限的分明和分离的思想。