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环境下,我们尝试下改成
然后执行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 功能虽然也很强 ...
随机推荐
- Spring集成MyBatis配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- shell并行处理
for i in (file1 file2 file3), do process_a $i | tee process_a $i_a.txt | process_b > $i_b.txt &am ...
- 吴裕雄--天生自然 pythonTensorFlow自然语言处理:Attention模型--测试
import sys import codecs import tensorflow as tf # 1.参数设置. # 读取checkpoint的路径.9000表示是训练程序在第9000步保存的ch ...
- C++ lock_guard 互斥锁
概述根据对象的析构函数自动调用的原理,c++11推出了std::lock_guard自动释放锁,其原理是:声明一个局部的lock_guard对象,在其构造函数中进行加锁,在其析构函数中进行解锁.最终的 ...
- linux下tab作用的描述?
[Tab] 接在一串指令的第一个字的后面,则为命令补全; 实例怎么描述?什么叫一串指令的第一个字?[Tab] 接在一串指令的第二个字以后时,则为『文件补齐』 实例怎么描述?什么叫一串指令的 ...
- 搭建rocketmq
安装maven和java环境,此处省略.如果没有安装,请先安装maven和java环境!或者安装openjdk 首先下载rockermq官方地址:http://rocketmq.apache.org/ ...
- usb转串口驱动安装失败
方法一:通过驱动精灵安装 方法二:手动下载后安装,下载地址如下http://www.wch.cn/download/CH341SER_EXE.html https://blog.csdn.net/ja ...
- C#面向对象---对象成员、方法加载、引用类库
一.方法重载: 1.两个函数同名,就互相构成方法的重载关系 2.重载的函数,必须跟其他函数之间具有不同的参数类型或参数个数 二.字段与属性 类的字段: 类里面是可以直接定义变量的,这些变量就叫类的字段 ...
- idea转eclipse快捷键
1.打开idea,点击上方菜单栏中的File, 2.在弹出的setting页面中左侧导航中选择Keymap:在keymaps下拉列表中选择Eclipse:如果想要使用这个快捷键风格,则点击右侧的cop ...
- springboot项目实现jar包外配置文件管理
背景 为实现快速搭建和开发,项目以Springboot框架搭建,springboot搭建的项目可以将项目直接打成jar包并运行,无需自己安装配置Tomcat或者其他服务器,是一种方便快捷的部署方式. ...