SpringBoot2.2.13子模块dependency中依赖的版本号
在上一节中我们创建一个子模块,在编写Maven的配置文件pom.xml时,并没有指定 <version>
, 项目也可以正常运行。pom.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<!--将这里的版本号,修改成自己刚刚编译的版本号,方便调试 -->
<version>2.2.13.RELEASE.aibei</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.ai_bei</groupId>
<artifactId>springboot-ai-bei-tests</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
在上面的pom中有两个核心的依赖:spring-boot-starter-parent
和 spring-boot-starter-web
。
-
spring-boot-starter-parent
作为springboot-ai-bei-tests
的父项目依赖,同时也是Springboot项目的统一父项目依赖管理。-
通过查看
spring-boot-starter-parent
项目的pom.xml文件如下:
....... <modelVersion>4.0.0</modelVersion> <!--依赖父项目 spring-boot-dependencies --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${revision}</version> <relativePath>../../spring-boot-dependencies</relativePath> </parent> <artifactId>spring-boot-starter-parent</artifactId> <packaging>pom</packaging> <name>Spring Boot Starter Parent</name> <description>Parent pom providing dependency and plugin management for applications built with Maven</description> <properties> <!--设置了一个路径参数,后面会用到--> <main.basedir>${basedir}/../../..</main.basedir> <!--定义了工程的Java版本是1.8--> <java.version>1.8</java.version> <!--定义了与 Spring ${} 占位符不冲突的分隔符--> <resource.delimiter>@</resource.delimiter> <!-- delimiter that doesn't clash with Spring ${} placeholders --> <!--定义了工程编译源文件的编码格式是UTF-8--> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!--定义了工程编译后的文件的编码格式是UTF-8--> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <!--定义了工程的Java版本是1.8--> <maven.compiler.source>${java.version}</maven.compiler.source> <!--定义了工程的Java版本是1.8--> <maven.compiler.target>${java.version}</maven.compiler.target> </properties> <build> <!-- Turn on filtering by default for application properties --> <!--默认情况下打开应用程序属性的过滤--> <resources> <resource> <directory>${basedir}/src/main/resources</directory> <filtering>true</filtering> <includes> <include>**/application*.yml</include> <include>**/application*.yaml</include> <include>**/application*.properties</include> </includes> </resource> <resource> <directory>${basedir}/src/main/resources</directory> <excludes> <exclude>**/application*.yml</exclude> <exclude>**/application*.yaml</exclude> <exclude>**/application*.properties</exclude> </excludes> </resource> </resources> <!--插件申明,提供了插件的默认值--> <pluginManagement> .......
通过查看
spring-boot-starter-parent
会发现它又依赖了spring-boot-dependencies
,我们进入spring-boot-dependencies
项目中,-
通过查看
spring-boot-dependencies
项目中的pom文件,可以发现在spring-boot-dependencies
项目中提前进行了部分maven的依赖版本号的配置:
....... <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-build</artifactId> <version>${revision}</version> <relativePath>../..</relativePath> </parent> <artifactId>spring-boot-dependencies</artifactId> <packaging>pom</packaging> <name>Spring Boot Dependencies</name> <description>Spring Boot Dependencies</description> <url>https://projects.spring.io/spring-boot/#</url> <licenses> <license> <name>Apache License, Version 2.0</name> <url>https://www.apache.org/licenses/LICENSE-2.0</url> </license> </licenses> <scm> <url>https://github.com/spring-projects/spring-boot</url> </scm> <developers> <developer> <name>Pivotal</name> <email>info@pivotal.io</email> <organization>Pivotal Software, Inc.</organization> <organizationUrl>https://www.spring.io</organizationUrl> </developer> </developers> <!--提前进行了部分maven的依赖版本号的配置--> <properties> <main.basedir>${basedir}/../..</main.basedir> <!-- Dependency versions --> <activemq.version>5.15.14</activemq.version> <antlr2.version>2.7.7</antlr2.version> <appengine-sdk.version>1.9.84</appengine-sdk.version> ....... <!--提前进行了部分maven的依赖版本号依赖--> <dependencyManagement> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot</artifactId> <version>${revision}</version> </dependency> .......
看到这里就明白了,为什么项目
springboot-ai-bei-tests
在依赖spring-boot-starter-web
的时候,可以不用指明<version>
。 -