我想使用最新版本的spring-data-mongodb,以便使用全文搜索功能,但我不知道如何使用spring-boot-starter-data-mongodb依赖来指定它
您可以在此处阅读:maven repository未指定spring-data-mongodb版本。
这是我的pom文件:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.1.6.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<!-- Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot Rest -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<!-- Spring Boot Test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Spring MongoDB integration -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
答案 0 :(得分:10)
Spring Boot在spring-boot-dependencies项目中定义了所有依赖项和依赖项版本。此项目仅包含pom,仅包含依赖项和版本作为属性。
Spring Data在所谓的版本系列中发布了所有兼容版本,这确保了该版本的所有依赖项可以协同工作。
当您使用a closer look a the pom时,您将看到名为spring-data-releasetrain.version
的maven属性,对于即将到来的Spring Boot 1.2,它指向最新的版本系列Evans-RELEASE
。 1.1.7版本指向先前版本Dijkstra-SR4
。为了以防万一,我建议从1.1.6升级到1.1.7。
您的项目已经将spring-boot-starter-parent
项目作为其父项,因此理论上升级Spring Data版本应该像覆盖指定的属性一样简单。
<properties>
<spring-data-releasetrain.version>Evans-RELEASE</spring-data-releasetrain.version>
</properties>
如前所述,首选使用发布系列,因为这将确保您获得所有兼容版本。
答案 1 :(得分:1)
您可以在父项目pom文件中找到mongodb依赖项
/../.m2/repository/org/springframework/boot/spring-boot-dependencies/2.3.0.RELEASE/spring-boot-dependencies-2.3.0.RELEASE.pom
该文件定义了SpringBoot使用的其他库的所有依赖项版本
<properties>
<activemq.version>5.15.12</activemq.version>
<antlr2.version>2.7.7</antlr2.version>
...
<mongodb.version>4.0.3</mongodb.version>
...
</properties>
因此,如果您想对mongodb使用不同的版本,请在pom文件中定义一个属性以覆盖默认属性(例如,我认为这仅在您将spring-boot-starter-parent
用作父级时有效)
<properties>
<mongodb.version>3.11.2</mongodb.version>
</properties>
答案 2 :(得分:0)
@ sendon1982的答案为我工作。这是我的POM.XML的示例。我将其添加为答案,因为我无法将pom文件粘贴为sendon1982答案的注释...
<?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 https://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.3.3.RELEASE</version>
<relativePath/>
</parent>
<groupId>test.barry</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>test</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<start-class>test.barry.Main</start-class>
<mongodb.version>4.1.0</mongodb.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
<version>2.3.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>4.1.0</version>
</dependency>
</dependencies>
</project>