如何使用带有spring的gradle依赖管理插件的分类器的dependencymanagement版本?

yvgpqqbh  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(429)

根据依赖关系管理插件#67,不能在 dependencySet 阻止。这个限制将在相关的问题中讨论(是否可以使用spring的gradle依赖管理插件设置dependencyset条目的分类器)。

dependencyManagement {
    dependencies {
        dependencySet(group:'com.querydsl', version: '4.2.2') {
            entry 'querydsl-apt' // This needs to use the "general" classifier
            entry 'querydsl-mongodb'
        }
    }
}

dependencies {
  annotationProcessor 'com.querydsl:querydsl-apt:4.2.2:general' // Version needed to use a classifier
  implementation 'com.querydsl:querydsl-mongodb'
}

解决这一限制的方法之一是使用 ext 块,并定义版本变量:

ext {
  querydslVersion = 4.2.2
}

dependencyManagement {
    dependencies {
        dependencySet(group:'com.querydsl', version: querydslVersion) {
            entry 'querydsl-mongodb'
        }
    }
}

dependencies {
  annotationProcessor "com.querydsl:querydsl-apt:$querydslVersion:general" // Version needed to use a classifier
  implementation 'com.querydsl:querydsl-mongodb'
}

这种方法的一个缺点是,它需要设置一个否则不会设置的属性(并且可能需要在多模块插件中的模块之间设置,从而使构建不那么明显)。如果依赖版本是通过bom(例如。 imports { mavenBom 'org.springframework.boot:spring-boot-dependencies:2.3.1.RELEASE'} ,因为这需要手动保持版本与bom值同步。
尽管有此限制,是否仍有方法使用依赖关系管理部分中定义的版本?

xpszyzbs

xpszyzbs1#

spring依赖关系管理插件通过 managedVersions Map。这可用于获取工件的依赖版本,该版本可用于指定要使用的版本:

dependencies {
  annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.managedVersions['com.querydsl:querydsl-apt']}:general"
  implementation 'com.querydsl:querydsl-mongodb'
}

相关问题