【问题标题】:Gradle Spring dependency management not resolvingGradle Spring依赖管理没有解决
【发布时间】:2021-03-13 02:14:37
【问题描述】:

在一个使用 Gradle 构建的简单 Spring Java 项目中,我使用 io.spring.dependency-management 应用 BOM,它应该在全局范围内指定依赖版本。

现在在 BOM 中,我已将 jackson-databind (2.9.5) 的默认版本从 Spring Boot 2.0.2.RELEASE 覆盖到版本 2.9.10.4。

我在 dependencyManagement 部分指定了这个 BOM,并期望 jackson-databind 将在 2.9.10.4 版本中得到解决。然而事实并非如此。如果我在我的子项目中运行 gradle 依赖项,它仍然会定义 Spring Boot 2.0.2.RELEASE 的版本:

runtimeClasspath - Runtime classpath of source set 'main'.
\--- com.fasterxml.jackson.core:jackson-databind -> 2.9.5

我还需要做些什么来启用dependencyManagement吗?

这里是 build.gradle 文件

buildscript {
    repositories {
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath 'io.spring.gradle:dependency-management-plugin:1.0.10.RELEASE'
        classpath 'org.springframework.boot:spring-boot-gradle-plugin:2.0.2.RELEASE'
        // ...
    }
}

allprojects {
    repositories {
        mavenLocal()
        mavenCentral()
    }
    apply plugin: 'java'
    apply plugin: 'io.spring.dependency-management'

    dependencyManagement {
        imports {
            mavenBom "com.itshelf:project-bom:1.0.0"
        }
    }
}

subprojects {
        apply plugin: 'org.springframework.boot'
        // ... package Spring fat jar with embedded tomcat into docker image.
}

和BOM定义

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.itshelf</groupId>
  <artifactId>project-bom</artifactId>
  <version>1.0.0</version>
  <packaging>pom</packaging>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.0.2.RELEASE</version>
        <scope>import</scope>
        <type>pom</type>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.9.10.4</version>
      </dependency>
      ...
    </dependencies>
  </dependencyManagement>
</project>

【问题讨论】:

    标签: spring-boot maven gradle maven-dependency-plugin


    【解决方案1】:

    不支持本地 maven bom 文件 - 您已经覆盖了依赖项的显式 lib 版本。一个更好的主意是创建一个具有显式版本的 dips-bom.gradle - 基本上是 bom 的 gradle 版本。

    【讨论】:

    • 我实际上是在 mavenBom "com.itshelf:project-bom:1.0.0" 的dependencyManagement 块中引用本地maven 存储库中的一个BOM 文件。它来自 maven repo,也可能在 maven 中心...所以我不想从磁盘或资源加载本地 maven 文件。
    猜你喜欢
    • 2022-12-23
    • 2015-05-10
    • 2018-08-24
    • 1970-01-01
    • 2019-01-30
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多