【问题标题】:Managing Spring dependencies in Gradle在 Gradle 中管理 Spring 依赖项
【发布时间】:2018-08-24 15:14:27
【问题描述】:

我正在使用带有 Gradle 的 Spring Boot 框架。我知道要包含一些 Spring 依赖项,我可以在不明确定义版本的情况下引用“starters”;版本将由我选择的 Spring Boot 版本控制,即 Spring Boot Gradle 插件的版本。示例(省略不相关的 Gradle 代码):

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath group: 'org.springframework.boot', name: 'spring-boot-gradle-plugin', version: BOOT_VERSION
        classpath group: 'io.spring.gradle', name: 'dependency-management-plugin', version: DEP_MGMT_VERSION
    }
}

...

dependencies {
    compile 'org.springframework.boot:spring-boot'
    testCompile 'org.springframework.boot:spring-boot-starter-test'
}

请注意,上面没有为我的应用程序依赖项定义明确的版本。

现在,假设我想包含一些 Spring Cloud 和 Spring Integration 依赖项。例如:

compile 'org.springframework.integration:spring-integration-mqtt:some-version'
compile 'org.springframework.cloud:spring-cloud-netflix-eureka-server:some-other-version'

如何确保我用于这些依赖项的版本与我的其他 Spring Boot 依赖项兼容?我不能省略版本,所以 Gradle 插件似乎没有处理这些依赖项(也许它只处理组 org.springframework.boot 的那些?)。

换句话说,是否有一种干净、安全的方法来确保我的所有 Spring 依赖项(来自 Spring Boot、Spring Cloud 等)能够协同工作?

【问题讨论】:

    标签: java spring spring-boot gradle spring-cloud


    【解决方案1】:

    在您的 gradle 脚本中使用启动器。

    dependencies {
        compile("org.springframework.boot:spring-boot-starter-web:2.0.0.RELEASE")
        compile ':spring-cloud-starter-config'
        compile ':spring-cloud-starter-netflix-eureka-client'
        compile ':spring-boot-starter-integration'
    }
    

    https://github.com/spring-gradle-plugins/dependency-management-plugin/blob/master/README.md

    对于 Spring Cloud,添加具有兼容 Cloud-to-Boot 版本的 dependencyManagement 部分。文档指出了哪些项目版本与相应的 Boot trains(1.4.x、1.5.x、2.x)兼容:

    dependencyManagement {
      imports {
        mavenBom ':spring-cloud-dependencies:Finchley.M8'
      }
    }
    

    Finchley 构建并与 Spring Boot 2.0.x 一起使用,预计不会与 Spring Boot 1.5.x 一起使用。

    Dalston 和 Edgware 发布系列基于 Spring Boot 1.5.x 构建,预计不适用于 Spring Boot 2.0.x。

    Camden 发布系列基于 Spring Boot 1.4.x 构建,但也使用 1.5.x 进行了测试。

    http://projects.spring.io/spring-cloud/

    【讨论】:

    • 对于 Spring Cloud,可以使用通配符版本来消耗错误修复等吗?例如Finchley.+.
    猜你喜欢
    • 2022-12-23
    • 2019-01-30
    • 1970-01-01
    • 2013-06-15
    • 2021-03-13
    • 1970-01-01
    • 2017-09-29
    • 2012-10-25
    相关资源
    最近更新 更多