gradle和maven类似,是一个构建工具
gradle安装和配置#
1.mac安装gradle
1 | brew install gradle |
或者下载gradle的二进制安装包
1 | https://gradle.org/releases/ |
然后在~/.bash_profile中配置
1 | # gradle |
2.查看是否安装成功
1 | gradle -v |
使用gradle后,老版本的IDEA 2017.1 对gradle的支持较弱,建议升级到新版本 2021.1
如果需要添加 gradle.properties 配置文件,请放在 $GRADLE_HOME 目录
1 | ➜ /Users/lintong/software/gradle-7.3.2 $ ls | grep gradle.properties |
配置文件内容
1 | /Users/lintong/software/gradle-7.3.2 $ cat gradle.properties |
gradle处理依赖冲突#
使用gradle的时候如果遇到依赖冲突,可以添加如下配置,添加后再编译就能使得有冲突的时候自动失败
1 | configurations.all { |
可以看到引入了多个版本的 org.apache.commons:commons-math3,那么就需要找到是哪几个jar包引入了冲突,可以使用如下命令
1 | gradle dependencyInsight --configuration runtimeClasspath --dependency org.apache.commons:commons-math3 |
可以看到在 org.apache.spark:spark-hive_2.12:3.1.2, org.apache.hadoop:hadoop-common:3.2.1, org.apache.spark:spark-core_2.12:3.1.2, org.apache.spark:spark-sql_2.12:3.1.2 中引入了冲突,且默认使用的版本都是最高的 3.6.1,这时候使用exclude来排除冲突,如下
1 | implementation ('org.apache.spark:spark-hive_2.12:3.1.2'){ |
再次 gradle clean fatJar,就看不到 commons-math3 的冲突了
也可以强制指定版本的方式来排除依赖冲突,如下
1 | implementation ('com.google.guava:guava') { |
或者
1 | implementation ('com.google.guava:guava:30.1.1-jre') { |
这样guvua的依赖冲突就解决了
参考:gradle依赖冲突解决 和 详解Gradle依赖冲突解决方式
Downgrading versions and excluding dependencies
gradle插件搜索#
1 | https://plugins.gradle.org/search |
implementation、api、compileOnly等的区别#
参考:implementation、api、compileOnly区别详解