首页 > 解决方案 > 如何将 spring data mongodb 2.1.0.RELEASE 与 spring boot 2.0.5 和 Jhipster 5.3.3 一起使用?

问题描述

我正在使用带有 Jhipster 5.3.3 的 spring-boot 2.0.5.RELEASE,我的 pom 如下:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>io.github.jhipster</groupId>
            <artifactId>jhipster-dependencies</artifactId>
            <version>${jhipster-dependencies.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!-- jhipster-needle-maven-add-dependency-management -->
    </dependencies>
</dependencyManagement>
...
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
...

现在我了解到 Spring Data 已经发布了对 MongoDB4 事务管理的支持,我想试一试,因为它听起来很酷!

基于弹簧参考文档:https ://docs.spring.io/spring-data/mongodb/docs/2.1.0.RELEASE/reference/html/#dependencies

在 spring boot 中使用 spring data mongodb 2.1.0.RELEASE 就像添加 releasetrain 的 BOM 一样简单。我做了什么,我的 pom 变成了:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>io.github.jhipster</groupId>
            <artifactId>jhipster-dependencies</artifactId>
            <version>${jhipster-dependencies.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!-- jhipster-needle-maven-add-dependency-management -->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-releasetrain</artifactId>
            <version>Lovelace-RELEASE</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
    </dependencies>

</dependencyManagement> 

但这并没有带来任何spring data mongodb 2.1.0 jars,只有releasetrain lovelace 的pom。Maven只下载releasetrain的pom,继续下载spring boot 2.0.5自带的spring data mongodb 2.0.10。

标签: javaspring-bootmaven-3jhipsterspring-data-mongodb

解决方案


我找到了方法,因为我使用 Jhipster 作为我的项目 pom 的父级,所以我必须在 Jhipster 之前声明 lovelace 依赖管理,所以我的 pom 变为:

<dependencyManagement>
  <dependencies>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-releasetrain</artifactId>
        <version>Lovelace-RELEASE</version>
        <scope>import</scope>
        <type>pom</type>
    </dependency>
    <dependency>
        <groupId>io.github.jhipster</groupId>
        <artifactId>jhipster-dependencies</artifactId>
        <version>${jhipster-dependencies.version}</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
</dependencies>

</dependencyManagement> 
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

然后maven会下载lovelace依赖管理中指定的spring data mongodb版本。

我必须阅读 spring boot 参考指南才能理解这一点。


推荐阅读