Ash*_*oyi 4 gradle annotation-processing spring-boot maven-bom
我正在尝试将Maven BOM与gradle 5.1.1一起使用,如下所述
ext {
set('spring-boot-dependencies.version', '2.1.2.RELEASE')
}
apply plugin: 'java'
group 'com.acme'
version '1.0.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
jcenter()
}
dependencies {
// maven bom
implementation platform("org.springframework.boot:spring-boot-dependencies:${project.'spring-boot-dependencies.version'}")
compileOnly('org.projectlombok:lombok')
annotationProcessor('org.projectlombok:lombok')
}
Run Code Online (Sandbox Code Playgroud)
当我运行./gradlew dependencies --configuration=annotationProcessor&时./gradlew dependencies --configuration=compileOnly,我分别得到以下内容
annotationProcessor - Annotation processors and their dependencies for source set 'main'.
\--- org.projectlombok:lombok FAILED
Run Code Online (Sandbox Code Playgroud)
compileOnly - Compile only dependencies for source set 'main'.
+--- org.projectlombok:lombok FAILED
Run Code Online (Sandbox Code Playgroud)
奇怪的是,IntelliJ可以compileOnly正确解决依赖关系,但不能解决annotationProcessor
我对所发生的事情很困惑。任何帮助表示赞赏
Lou*_*met 10
在Gradle中,平台(如常规依赖项)的作用域是给定的配置(以及扩展该配置的配置)。
在您的示例中,BOM仅用于中implementation,因此仅会为该配置及其扩展提供建议,例如compileClasspath或runtimeClasspath。
为了解决您的问题,您需要将BOM表声明为要从其推荐版本中受益的所有配置。
您可以通过重复声明来实现:
compileOnly platform("org.springframework.boot:spring-boot-dependencies:${project.'spring-boot-dependencies.version'}")
annotationProcessor platform("org.springframework.boot:spring-boot-dependencies:${project.'spring-boot-dependencies.version'}")
Run Code Online (Sandbox Code Playgroud)
或者您可以创建一个专用配置,并使所有需要约束的配置扩展它:
configurations {
springBom
compileOnly.extendsFrom(springBom)
annotationProcessor.extendsFrom(springBom)
implementation.extendsFrom(springBom)
}
dependencies {
springBom platform("org.springframework.boot:spring-boot-dependencies:${project.'spring-boot-dependencies.version'}")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
698 次 |
| 最近记录: |