当前位置: 首页 > 知识库问答 >
问题:

Gradle Spring依赖项管理未解析

慕容玉书
2023-03-14

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

现在在BOM中,我已经覆盖了jackson-databind(2.9.5)的默认版本,从Spring Boot2.0.2.Release到2.9.10.4版本。

我在dependencyManagement部分指定了这个BOM,并希望jackson-databind将在2.9.10.4版本中得到解决。然而,事实并非如此。如果我在子项目中运行gradle依赖项,它仍然定义了Spring Boot2.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.
}
<?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>

共有1个答案

东门子昂
2023-03-14

不支持本地maven bom文件-您已经覆盖了依赖项的显式库版本。一个更好的想法是创建一个带有明确版本的dips-bom.gradle-基本上是bom的gradle版本。

 类似资料:
  • 最近,我发现了以下问题: 当我为我的项目设置依赖项管理时,我有一个child-pom,它使用具有依赖项的插件,我想要与在我的依赖项管理中声明的依赖项同步。 在根pom中,我在依赖项管理中声明: 在子pom中,我有一个插件需要gwt-user: 但是,如果我移除gwt-maven-plugin中使用的依赖版本,编译就会失败。 是不是还有别的办法可以实现呢? PS:在maven和maven插件中有一个

  • 当我试图导入依赖项时,我收到以下错误: 请帮帮我,我哪里错了? 事先谢谢你

  • 使用公共存储库和 Apache Ant 共享其他项目的源代码 管理项目和工具之间的源代码依赖项往往非常困难,但并不一定总是如此。在这一期“ 让开发自动化”中,自动化专家 Parl Duvall 介绍了如何利用 Apache Ant 项目中的 Ivy 依赖项管理器来处理所有重要 Java 项目必须管理的无数依赖项。 实际上,所有软件开发项目都必须依靠来自其他项目的源代码。例如,许多项目可能依靠 lo

  • When you want to add, upgrade, or remove dependencies there are a couple of different commands you need to know. Each command will automatically update your package.json and yarn.lock files. Adding a

  • 简介 在第三章我们在构建To Do应用的时候学习到了怎么声明对Servlet ApI的依赖,Gradle的领域特定语言使得声明依赖和仓库变得很简单,你只需要在dependencies脚本中声明你所依赖的库,然后你需要告诉构建系统要从哪个仓库里下载依赖。提供了这两个信息,Gradle就能自动解析、下载依赖到你的电脑上,如果有需要会存储在本地缓存中必备以后需要。 这一章我们将介绍Gradle对依赖管理