场景:
项目需要从maven要切换到gradle,开始学习gradle使用之旅
下载
https://gradle.org/releases/
选择合适的版本,下载二进制文件即可
配置环境变量
- 配置环境变量,新建系统环境“GRADLE_HOME”,值为gradle解压的路径,例:D:\tools\gradle-6.6
- 配置path,找到path变量,后面添加%GRADLE_HOME%\bin
测试
gradle -v
显示gradle版本信息,说明配置成功
idea整合
环境变量配置
配置 “GRADLE_USER_HOME” 环境变量,指向系统文件夹,例如:E:\download\gradleRepository,表示指定gradle下载的文件配置;
环境变量配置后,此处会默认修改 自定义的 文件下载位置
gradle user home其实是idea的项目从中央仓库下载jar包和Gradle环境还有其他配置文件的目录,这个目录默认是和GRADLE_USER_HOME同步的,所以我们并不需要修改gradle user home,只需要在环境变量中加入GRADLE_USER_HOME即可自动修改gradle user home
Tips:gradle user home的默认路径是 C:\Users\用户名\.Gradle,也就是说默认下载的位置就是这里
项目创建后
- gradle user home 为我们配置的默认仓库地址,不需要修改
- use gradle from 选择 Specified location,然后后面的路径选择我们本地的gradle目录
gradle寻找本地maven仓库位置的策略
USER_HOME/.m2/settings.xml >> M2_HOME/conf/settings.xml >> USER_HOME/.m2/repository
maven环境变量我们习惯配置成MAVEN_HOME,但是gradle寻找的是M2_HOME,所以我们需要配置M2_HOME环境变量
tips: 此处有几个点要记住
1. 习惯上maven的环境变量我们会配置MAVEN_HOME,gradle并不能找到这个环境变量,gradle寻找到是M2_HOME;
2. maven 版本问题,maven1.0通常配置MAVEN_HOME,maven2.0后推荐使用M2_HOME配置,倘若未配置M2_HOME环境变量,gradle默认会使用用户目录下的 .m2默认文件,导致依赖都下载在此目录下,C盘承受不住;此处推荐直接配置M2_HOME,或者新增M2_HOME
3. 另一种方式,可以把maven的Setting.xml文件显式配置 到用户目录下的 .m2文件夹下,这样配置文件中指定的maven仓库地址也能够生效
遇到的问题
问题一:
编译问题
报错:
> Task :prepareKotlinBuildScriptModel UP-TO-DATE
Errors occurred while build effective model from E:\download\gradleRepository\caches\modules-2\files-2.1\com.google.zxing\core\3.3.3\3fc07a37b124d3f9e134854b4c7bf7dc120bcae7\core-3.3.3.pom:
'dependencyManagement.dependencies.dependency.systemPath' for com.google.android:android:jar must specify an absolute path but is /${env.ANDROID_HOME}/platforms/android-22/android.jar in com.google.zxing:core:3.3.3
Errors occurred while build effective model from E:\download\gradleRepository\caches\modules-2\files-2.1\com.google.zxing\core\3.3.3\3fc07a37b124d3f9e134854b4c7bf7dc120bcae7\core-3.3.3.pom:
'dependencyManagement.dependencies.dependency.systemPath' for com.google.android:android:jar must specify an absolute path but is /${env.ANDROID_HOME}/platforms/android-22/android.jar in com.google.zxing:core:3.3.3
Errors occurred while build effective model from E:\download\gradleRepository\caches\modules-2\files-2.1\com.google.zxing\core\3.3.3\3fc07a37b124d3f9e134854b4c7bf7dc120bcae7\core-3.3.3.pom:
'dependencyManagement.dependencies.dependency.systemPath' for com.google.android:android:jar must specify an absolute path but is /${env.ANDROID_HOME}/platforms/android-22/android.jar in com.google.zxing:core:3.3.3
Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
编译有问题,运行没问题
解决方案
项目依赖问题,属于pom文件引用相对路径问题
手动找gradle仓库位置中pom中 platforms/android-22/android.jar 的应用路径,注释掉android.jar 的依赖引用,即可解决
可参考:https://weiku.co/article/471/
问题二:
使用api关键字报错,原因缺少plugin插件,api属于java-library的方法
官方文档如下介绍:https://docs.gradle.org/current/userguide/java_library_plugin.html