我在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等中协同工作?
答案 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测试。