Gradle的依赖方式——Lombok在Gradle中的正确配置姿势
写过java的都知道,lombok几乎在项目中处于不可或缺的一部分,但是lombok在Gradle的项目中配置并非人人都知道。
很多人在项目依赖中直接这样写
1 |
compile "org.projectlombok:lombok:1.18.4" |
但这样的处理在Gradle 5.0以上被命令禁止了,在4.x的高级版本中编译时也会有对应的告警
1 |
The following annotation processors were detected on the compile classpath: 'lombok.launch.AnnotationProcessorHider$AnnotationProcessor' |
下面先来了解下目前Gradle(4.1以上)的几种常见的依赖方式。
- api:与旧版的compile相同;
- implementation:解决重复依赖问题。例如A依赖B,B依赖C,那么A里面将不能调用C的方法;
- compile only:编译有效,打包无效。替代旧版的provider;
- runtime only:打包有效,编译无效;
- test、debug、release implementation:对应test、debug、release环境的implementation。
回到Lombok的使用上,我们知道lombok是可以简化编写的代码,可以让开发人员通过注解的形式少写一些重复具有模板形式的代码。然后这些注解可以在代码编译的时候,自动生成对应模板代码。
并且在打jar/war包的时候,并不需要把lombok的依赖打进包中,所以Lombok在依赖上应该是compile only(仅在编译时生效)才对。
在Gradle 5.0环境下,我们尝试下改成
1
compileOnly "org.projectlombok:lombok:1.18.4"
然后执行gradle build。会发现代码报错,找不到对应生成后的代码(如果用idea build则不会,因为自带了插件。4.4+的版本也不会报错,但会告警)。
Lombok的正确配置
回到开头的官方告警中,有这么一句
Detecting annotation processors on the compile classpath is deprecated and Gradle 5.0 will ignore them.
Please add them to the annotation processor path instead.
在5.0的环境下,注解处理将不再compile classpath中,需要手动添加到annotation processor path。
最终的对应依赖如下
1 |
compileOnly 'org.projectlombok:lombok:1.18.4' |
P.S. 如果不配置compileOnly,只配annotationProcessor(gradle5.0以上才有),也会build成功,但会把依赖也打包进去。
针对5.0以下版本,对应依赖如下
1 |
compileOnly 'org.projectlombok:lombok:1.18.4' |
看完后,大家可以动起来,把自己项目中的lombok配置改掉吧(注意gradle版本)。
更多技术文章、精彩干货,请关注
博客:zackku.com
微信公众号:Zack说码
Gradle的依赖方式——Lombok在Gradle中的正确配置姿势的更多相关文章
- Gradle dependencies 依赖方式
implementation:使用了该命令编译的依赖,仅仅对当前的Moudle提供接口 依赖首先应该设置为implement的,如果没有错,那就用implement,如果有错,那么使用api指令 那为 ...
- Gradle[0]依赖本地JAR和远程仓库JAR的配置
1.对本地Jar的依赖配置 如果不知道Jar包的远程仓库地址,而项目中又要使用该Jar包,就需要进行本地设置. 例如,需要使用的Jar包为sigar.jar,则需要在项目根目录下建目录:libs,并把 ...
- vue render中如何正确配置img的路径
第一种:适用于静态路径 attrs: { src: require('../common/images/logo.png'), title: 'img' } 第二种:适用于动态路径 domProps: ...
- Android Gradle 依赖方式
Android Gradle 依赖方式有以下6种: Compile compile是对所有的build type以及favlors都会参与编译并且打包到最终的apk文件中. Provided Prov ...
- Gradle Maven 依赖管理
仓库管理简介 本质上说,仓库是一种存放依赖的容器,每一个项目都具备一个或多个仓库. Gradle支持以下仓库格式: Ivy仓库 Maven仓库 Flat directory仓库 我们来看一下,对于每一 ...
- 【译】Gradle 的依赖关系处理不当,可能导致你编译异常
文章 | Ashesh Bharadwaj 翻译 | 承香墨影 授权 承香墨影 翻译.编辑并发布 在 Android Studio 中,Gradle 构建过程对于开发者来说,很大程度上是抽象的.作为一 ...
- gradle入门(1-2)gradle的依赖管理
Gradle支持以下仓库格式: Ivy仓库 Maven仓库 Flat directory仓库 一.添加仓库 1.添加Ivy仓库 1.1.通过URL地址添加一个Ivy仓库 我们可以将以下代码片段加入到b ...
- Gradle之依赖管理
Gradle之依赖管理 泡在网上的日子 / 文 发表于2015-01-29 16:12 第8824次阅读 Gradle,Android Studio 2 编辑推荐:稀土掘金,这是一个针对技术开发者的一 ...
- 【入门】Gradle的基本使用、在IDEA中的配置、常用命令
一.介绍 java的源码构建工具,大致经历了 ant -> maven -> gradle 这个过程,每一次进步,都是在解决之前的工具所带来的问题,简单来说: 1. ant 功能虽然也很强 ...
随机推荐
- saltstack的salt-api介绍
一.salt-api安装 yum install salt-api pyOpenSSL -y #pyOpenSSL 生成自签证书时使用 二.生成自签名证书(ssl使用) [root@master ce ...
- zabbix数据库占用磁盘空间较大的处理方法
du -h /* |sort -nr 使用此命令一步步排查发现/var/lib/mysql/zabbix/这个目录占用磁盘空间较大 发现history_log.ibd这个文件最大,达到了38G,此文 ...
- SSID
无线网络中SSID,是路由器发送的无线信号的名字!如果你将你的无线路由器的SSID:命名为:gouwancheng ,那么当你的无线路由器开启,并启用了无线功能,和允许了SSID广播,那么你就可以轻易 ...
- HDU 6126 Give out candies(网络流)
题目给出n,m,k 然后给出n*m的矩阵a[i][j]代表第i个人在获得j 颗糖果能得到的满足值, 然后k是k行每行输入三个整数x,y,z ,x,y,z表示一组限制表示第x个人分到的糖数减去第 ...
- winform显示word、ppt和pdf,用一个控件显示
思路:都以pdf的格式展示,防止文件拷贝,所以要把word和ppt转换为pdf:展示用第三方组件O2S.Components.PDFView4NET.dll,破解版的下载链接:https://pan. ...
- The Five-Number Summary|Boxplots
3.3 The Five-Number Summary; Boxplots the deciles divide a data set into tenths (10 equal parts), th ...
- 让mybatis不再难懂(二)
上一篇文章写了mybatis的基本原理和配置文件的基本使用,这一篇写mybatis的使用,主要包括与sping集成.动态sql.还有mapper的xml文件一下复杂配置等.值得注意的是,导图17和18 ...
- Xen入门系列四【Xen 管理实操】
1. 克隆一台虚拟机 # virt-clone -o base -n vm-clone -f /vm/vm-clone.img 参数说明: -o 原虚拟机的名称:必须为关闭或者暂停状态. -n 新虚拟 ...
- 个人云主机 博客上线 家用宽带-树莓派2-certbot-docker 运行环境简介
https://blog.cuidp.top/ 博客主页,目前刚建好,没什么数据 服务是 https://github.com/TryGhost/Ghost 现插件是https://github.co ...
- life|October the 1st| five twenty|three–fifths|1970s|30s
The music is full of (a, an, the, /) life. It can release your pressure to a large extent, so I enj ...