从 Spring-dependency-management 插件中拉取依赖版本
Pull Dependency version from Spring-dependency-management plugin
我有一个 Gradle Task
可以从项目中提取依赖项并使用该数据。下面是我的 Gradle Task
task gavValidation() {
doLast {
project(':app').configurations.each {
configurationType ->
println "configurationType >>> "+configurationType.name
configurationType.allDependencies.each {
gav ->
println gav.group+" : "+gav.name+" : "+gav.version
}
}
}
}
print
语句在上面打印 gav.version
时始终显示为 null
。
我发现,这些依赖项的版本在 Spring Dependency Management
插件中维护。下面是片段
apply plugin: 'io.spring.dependency-management'
dependencyManagement {
imports {
mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Edgware.RELEASE'
mavenBom 'io.pivotal.spring.cloud:spring-cloud-services-dependencies:1.5.0.RELEASE'
mavenBom 'org.springframework.boot:spring-boot-dependencies:1.5.13.RELEASE'
}
dependencies {
dependency 'io.springfox:springfox-swagger2:2.8.0'
dependency 'io.springfox:springfox-swagger-ui:2.8.0'
}
}
如何在我的自定义任务中获取版本?当前为 null
如 Working with Dependencies 中所述,方法 Configuration.getDependencies()
或 Configuration.getAllDependencies()
仅 return 声明的依赖关系,不会触发依赖关系解析。因此,对于来自 Spring BOM 的依赖项,版本尚不清楚。
您可以使用Configuration.getResolvedConfiguration()
方法代替,如下:
task gavValidation() {
doLast {
configurations.each { configurationType ->
println " ***************** configurationType >>> " + configurationType.name
if (configurationType.canBeResolved) {
configurationType.getResolvedConfiguration().getResolvedArtifacts().each { artefact ->
ModuleVersionIdentifier id = artefact.getModuleVersion().getId()
println id.group + " : " + id.name + " : " + id.version
}
}
}
}
}
我有一个 Gradle Task
可以从项目中提取依赖项并使用该数据。下面是我的 Gradle Task
task gavValidation() {
doLast {
project(':app').configurations.each {
configurationType ->
println "configurationType >>> "+configurationType.name
configurationType.allDependencies.each {
gav ->
println gav.group+" : "+gav.name+" : "+gav.version
}
}
}
}
print
语句在上面打印 gav.version
时始终显示为 null
。
我发现,这些依赖项的版本在 Spring Dependency Management
插件中维护。下面是片段
apply plugin: 'io.spring.dependency-management'
dependencyManagement {
imports {
mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Edgware.RELEASE'
mavenBom 'io.pivotal.spring.cloud:spring-cloud-services-dependencies:1.5.0.RELEASE'
mavenBom 'org.springframework.boot:spring-boot-dependencies:1.5.13.RELEASE'
}
dependencies {
dependency 'io.springfox:springfox-swagger2:2.8.0'
dependency 'io.springfox:springfox-swagger-ui:2.8.0'
}
}
如何在我的自定义任务中获取版本?当前为 null
如 Working with Dependencies 中所述,方法 Configuration.getDependencies()
或 Configuration.getAllDependencies()
仅 return 声明的依赖关系,不会触发依赖关系解析。因此,对于来自 Spring BOM 的依赖项,版本尚不清楚。
您可以使用Configuration.getResolvedConfiguration()
方法代替,如下:
task gavValidation() {
doLast {
configurations.each { configurationType ->
println " ***************** configurationType >>> " + configurationType.name
if (configurationType.canBeResolved) {
configurationType.getResolvedConfiguration().getResolvedArtifacts().each { artefact ->
ModuleVersionIdentifier id = artefact.getModuleVersion().getId()
println id.group + " : " + id.name + " : " + id.version
}
}
}
}
}