【问题标题】:Using spring dependency management can't resolve dependency使用spring依赖管理无法解析依赖
【发布时间】: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 插件,否则版本将无法解析。

标签: spring spring-boot gradle gradle-plugin


【解决方案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') }
    猜你喜欢
    • 2017-05-06
    • 2019-01-27
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    相关资源
    最近更新 更多