在Gradle

时间:2018-03-15 17:29:10

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

我在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等中协同工作?

1 个答案:

答案 0 :(得分:0)

在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,添加一个dependencyManagement部分,其中包含兼容的Cloud-to-Boot版本。文档指出哪些项目版本与相应的引导序列(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/