我已阅读 reference 但我不明白 versionId 是如何在依赖项中设置的。例如 MongoDB starter 指定
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<exclusions>
<exclusion>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
但是缺少
version
标签。使用这些启动时如何确定mongodb-driver
的版本?
启动器工件的版本在启动器父级中进行管理。 例如,如果您的 POM 中有此内容:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>
那么您引用的任何启动启动器依赖项都将具有版本 2.0.2.RELEASE,除非您出于某种原因覆盖默认值并提供您自己的版本。
这不仅与初学者有关,如果您的项目中有许多模块,它们具有不同的依赖关系。作为常规做法,有一个具有常规设置的父级
pom.xml
。
如果您在子 Maven 模块中看到如下依赖项:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
父级中存在已配置的依赖项
pom
,例如:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.5</version>
</dependency>
通常,使用属性来配置版本会更灵活:
<properties>
<commons-lang3.version>3.5</commons-lang3.version>
</properties>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons-lang3.version}</version>
</dependency>
MongoDb
版本使用依赖管理机制在spring-boot-dependency中定义。
<properties>
<mongodb.version>3.8.0-beta2</mongodb.version>
<properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
<version>${mongodb.version}</version>
</dependency>
<dependencies>
<dependencyManagement>
依赖管理是一种集中依赖的机制 信息。当您有一组继承共同点的项目时 父级可以将有关依赖项的所有信息放入 通用 POM,并且对中的工件有更简单的引用 子 POM。