使用spring依赖管理无法解析依赖

Posted

技术标签:

【中文标题】使用spring依赖管理无法解析依赖【英文标题】:Using spring dependency management can't resolve dependency 【发布时间】:2021-07-05 19:36:01 【问题描述】:

您好,我在使用 spring 依赖管理插件时遇到了解决依赖问题

我有一个带有子项目的 gradle 项目,我正在使用这个配置。

build.gradle 文件

buildscript 
    repositories 
        mavenCentral()
    


plugins 
    id "io.spring.dependency-management" version '1.0.11.RELEASE' 
    id 'org.springframework.boot' version '2.4.4'


apply from: './main.gradle'

ma​​in.gradle 文件

subprojects 
    apply plugin: "java"
    apply plugin: "jacoco"
    apply plugin: 'io.spring.dependency-management'

    sourceCompatibility = JavaVersion.VERSION_1_8

    repositories 
        mavenCentral()
    

    dependencies 
        testImplementation 'org.springframework.boot:spring-boot-starter-test'
        testImplementation 'io.projectreactor:reactor-test'
        
        implementation 'io.projectreactor:reactor-core'
        implementation 'io.projectreactor.addons:reactor-extra'

        compileOnly 'org.projectlombok:lombok'
        annotationProcessor 'org.projectlombok:lombok'
        testAnnotationProcessor 'org.projectlombok:lombok'
        testCompileOnly 'org.projectlombok:lombok'
    


    jacoco 
        toolVersion = '0.8.2'
    

如您所见,我正在尝试为项目中的每个子项目加载一些依赖项,例如 io.projectreactor:reactor-core

当我运行 gradle refresh 时,我在我的 intellij IDE 控制台上收到这条消息(对于每个子项目):

Could not resolve: org.projectlombok:lombok
Could not resolve: io.projectreactor:reactor-core
Could not resolve: io.projectreactor.addons:reactor-extra
Could not resolve: org.springframework.boot:spring-boot-starter-test
Could not resolve: io.projectreactor:reactor-test

如果我将版本显式放在依赖项块中,则 gradle resolve 没有问题,但我不希望这样

关于这个问题的任何想法?我该如何验证它?

Gradle Wrapper 版本:6.8.3(intellij 配置为使用默认 gradle wrapper)

感谢您的帮助

问候!

【问题讨论】:

您还需要 Spring Boot 插件,否则版本将无法解析。 【参考方案1】:

我解决了这个问题,正如@m-deinum 建议的那样,我在根项目的依赖项上缺少 spring-boot-gradle-plugin。

谢谢

【讨论】:

【参考方案2】:

将“org.springframework.boot”添加到每个子模块的build.gradleplugins 部分:

plugins 
    ...
    id 'org.springframework.boot'

在这种情况下您不需要指定版本,因为它已经在根build.gradle中指定了

【讨论】:

嗨@amseager 我在 main.gradle 文件的子项目块中添加了apply plugin: 'org.springframework.boot',这解决了在进行 gradle 刷新时出现的消息。但是现在我遇到了另一个问题,当运行 gradle build one subproject (domain-usecase) 时,它在另一个子项目 (domain-model) 中找不到类。我收到错误:包不存在。即使我在项目域用例上有dependencies implementation project(':domain-model')

以上是关于使用spring依赖管理无法解析依赖的主要内容,如果未能解决你的问题,请参考以下文章