gofor's blog

  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

java11+springboot2+gradle5+idea+lombok 编译失败问题记录

发表于 2019-11-02 更新于 2020-01-10 分类于 技术 阅读次数: Valine:

问题描述

在开发个人项目时,使用到了Java11+Springboot2+Gradle5+IDEA+Lombok技术,采用Gradle多项目模式,其中A项目依赖B项目,在IDEA中Lombok使用正常,但是使用Gradle编译构建时,会抛出异常,提示找不到符号,即无法获取到到使用了Lombok相关注解的类和属性。

以下为build.gradle的部分配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
plugins {
id 'org.springframework.boot' version '2.2.0.RELEASE'
id 'io.spring.dependency-management' version '1.0.8.RELEASE'
id 'java'
}

allprojects {
group = 'xxx.xxxxx.xx'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
mavenCentral()
}
}

subprojects {
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'java'

dependencies {
...
compileOnly 'org.projectlombok:lombok'
...
}
}

问题解决

通过stackoverflow和Gradle文档了解到,Gradle升级到5.0之后,不再支持-processorpath的构建方式,需要改为CompileOptions.annotationProcessorPath的方式。因此,以上的配置已经不能满足Gradle的构建方式,Lombok官方提出annotationProcessor的方式或者插件的方式,以下为修改之后的配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
plugins {
id 'org.springframework.boot' version '2.2.0.RELEASE'
id 'io.spring.dependency-management' version '1.0.8.RELEASE'
id 'java'
}

allprojects {
group = 'xxx.xxxxx.xx'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
mavenCentral()
}
}

subprojects {
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'java'

configurations {
developmentOnly
runtimeClasspath {
extendsFrom developmentOnly
}
compileOnly {
extendsFrom annotationProcessor
}
}

dependencies {
...
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
...
}
}

通过以上方式,即可解决Gradle5构建环境下,无法获取Lombok注解信息的问题。也可以添加如上configurations配置域。

说明:这其实是个很好解决的问题,但是卡在这里很长时间,主要原因是另外一个问题引起的,详细信息见解决Springboot2中依赖本地项目Gradle5编译异常问题。

  • 本文作者: gofor
  • 本文链接: https://acehjm.github.io/2019/11/02/java11+springboot2+gradle5+idea+lombok编译失败问题记录/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
# springboot # gradle # lombok
SpringBoot多模块I18N配置无效,导致No message found under code 'xxx' for locale 'zh_CN_#Hans'问题
解决Springboot2中依赖本地项目Gradle5编译异常问题
gofor

gofor

Programming technology
14 日志
4 分类
14 标签
RSS
GitHub StackOverflow
Creative Commons
© 2016 – 2020 gofor
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Pisces v7.3.0
0%