我读过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
的版本是如何确定的?
答案 0 :(得分:4)
启动器atrifacts的版本在启动器父级中进行管理。例如,如果你在POM中有这个:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>
然后,您引用的任何引导启动程序依赖项都将具有版本2.0.2.RELEASE,除非您覆盖默认值并由于某种原因提供您自己的版本。
答案 1 :(得分:1)
这不仅与初学者有关,如果项目中有许多模块,他们有不同的依赖关系。作为常规练习,父级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-dependencies中使用Dependency Management机制定义。
<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>
依赖管理是一种集中依赖的机制 信息。如果有一组继承了公共项目的项目 parent可以将有关依赖项的所有信息都放入其中 常见的POM并且对文件中的工件有更简单的引用 儿童POM。