来自 spring.dependency-management 的 Gradle dependencyManagement 不起作用

问题描述 投票:0回答:1

我有一个多模块项目,根目录中有这样的build.gradle:

    plugins {
    id "io.spring.dependency-management" version "1.1.3"
    id "org.springframework.boot" version "3.1.3" apply false
    }

    allprojects {
    apply plugin: 'java'
    group 'com.epam.esm'
    sourceCompatibility = '17'
    targetCompatibility = '17'
    repositories {
        mavenCentral()
    }
    }

    dependencyManagement {
        dependencies {
        dependency 'org.projectlombok:lombok:1.18.26'
        dependency 'org.springframework.boot:spring-boot-starter-web:3.1.3'
        dependency 'org.springframework.boot:spring-boot-starter:3.1.3'
        dependency 'com.fasterxml.jackson.core:jackson-databind:2.14.2'
        dependency 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.14.2'
        dependency 'org.mapstruct:mapstruct-processor:1.5.3.Final'
        dependency 'org.mapstruct:mapstruct:1.5.3.Final'
        dependency 'org.zalando:problem-spring-web:0.27.0'
        dependency 'com.amazonaws:aws-java-sdk-s3:1.12.6'
    }
    imports {
        mavenBom 'org.springframework.cloud:spring-cloud-dependencies:2022.0.3'
    }
    }

还有我的子模块的

build.gradle

    dependencies {
    implementation 'org.projectlombok:lombok'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter'
    implementation 'com.fasterxml.jackson.core:jackson-databind'
    implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
    implementation 'org.mapstruct:mapstruct-processor'
    implementation 'org.mapstruct:mapstruct'
    implementation 'org.zalando:problem-spring-web'
    implementation 'com.amazonaws:aws-java-sdk-s3'
    }

不幸的是我得到了 `任务 ':aws-utils:compileJava' 执行失败。

无法解析配置“:aws-utils:compileClasspath”的所有文件。 找不到 org.projectlombok:lombok:。 要求者: 项目:aws-utils 找不到 org.springframework.boot:spring-boot-starter-web:。 要求者: 项目:aws-utils 找不到 org.springframework.boot:spring-boot-starter:。 要求者: 项目:aws-utils`

我尝试了

clean build
,也用了
--refresh-dependencies

spring gradle dependencies dependency-management
1个回答
0
投票

为了使

io.spring.dependency-management
插件正常工作,您需要将其应用到您的所有项目(或所有子项目,具体取决于您所需的设置)。 为了实现这一点,请相应地更改您的根 gradle.build 文件:

plugins {
    id "io.spring.dependency-management" version "1.1.3"
    id "org.springframework.boot" version "3.1.3" apply false
}

allprojects {
    apply plugin: 'io.spring.dependency-management'
    apply plugin: 'java'
    group 'com.epam.esm'
    sourceCompatibility = '17'
    targetCompatibility = '17'
    repositories {
        mavenCentral()
    }
    dependencyManagement {
        dependencies {
            dependency 'org.projectlombok:lombok:1.18.26'
            dependency 'com.fasterxml.jackson.core:jackson-databind:2.14.2'
            dependency 'org.springframework.boot:spring-boot-starter-web:3.1.3'
            dependency 'org.springframework.boot:spring-boot-starter:3.1.3'
            dependency 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.14.2'
            dependency 'org.mapstruct:mapstruct-processor:1.5.3.Final'
            dependency 'org.mapstruct:mapstruct:1.5.3.Final'
            dependency 'org.zalando:problem-spring-web:0.27.0'
            dependency 'com.amazonaws:aws-java-sdk-s3:1.12.6'
        }
        imports {
            mavenBom 'org.springframework.cloud:spring-cloud-dependencies:2022.0.3'
        }
    }
}

请记住,如果您使用

org.springframework.boot
插件,定义 Spring Boot Starter 项目版本是多余的。为了进一步简化你的根 build.gradle 文件,你也可以应用
org.springframework.boot
插件,如下所示:

plugins {
    id "io.spring.dependency-management" version "1.1.3"
    id "org.springframework.boot" version "3.1.3" apply false
}

allprojects {
    apply plugin: 'io.spring.dependency-management'
    apply plugin: 'org.springframework.boot'
    apply plugin: 'java'
    group 'com.epam.esm'
    sourceCompatibility = '17'
    targetCompatibility = '17'
    repositories {
        mavenCentral()
    }
    dependencyManagement {
        dependencies {
            dependency 'org.projectlombok:lombok:1.18.26'
            dependency 'com.fasterxml.jackson.core:jackson-databind:2.14.2'
            dependency 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.14.2'
            dependency 'org.mapstruct:mapstruct-processor:1.5.3.Final'
            dependency 'org.mapstruct:mapstruct:1.5.3.Final'
            dependency 'org.zalando:problem-spring-web:0.27.0'
            dependency 'com.amazonaws:aws-java-sdk-s3:1.12.6'
        }
        imports {
            mavenBom 'org.springframework.cloud:spring-cloud-dependencies:2022.0.3'
        }
    }
}

请注意,

dependencyManagement
部分中与 spring 启动器相关的依赖声明已被删除。

如果您打算在子模块中定义所有依赖项,并为项目设置保留根目录,则可以将与

apply plugin
和整个
dependencyManagement
clojure 相关的部分移动到
subprojects {}

© www.soinside.com 2019 - 2024. All rights reserved.