关于Gradle新版插件依赖方式
一、前言
gradle在7.0后,具体不清楚哪一版,把依赖方式进行了修改。这里将过程记录如下
二、旧版依赖方式
这里以Hilt的插件使用方式作为对比。 在项目级下面使用如下方式添加
buildscript { ... dependencies { ... classpath com.google.dagger:hilt-android-gradle-plugin:2.41 } }
然后,应用 Gradle 插件并在 app/build.gradle 文件中添加以下依赖项:
... apply plugin: kotlin-kapt apply plugin: dagger.hilt.android.plugin android { ... } dependencies { implementation "com.google.dagger:hilt-android:2.41" kapt "com.google.dagger:hilt-android-compiler:2.41" }
三、新版的依赖方式
修改项目下面的build.gradle为如下
plugins { id com.android.application version 7.1.3 apply false id com.android.library version 7.1.3 apply false id org.jetbrains.kotlin.android version 1.6.21 apply false id com.google.dagger.hilt.android version 2.41 apply false } task clean(type: Delete) { delete rootProject.buildDir }
然后,应用 Gradle 插件并在 app/build.gradle 文件中不需要做改动
四、修改原因
为什么这样修改,根据网上查到的原因是新版升级后,gradle插件的发布也的需要做下更改,要不然还是用不了,所以并不是所有插件都可以这样改的,那么怎么知道这样改可以呢,如何知道要这样写呢。这个主要要去依赖的仓库查看,比如通常用的google()和mavenCentral()。这里以maven仓库为例。打开com.google.dagger.hilt.android的maven地址:
可以看到以下内容:
<dependency> <groupId>com.google.dagger.hilt.android</groupId> <artifactId>com.google.dagger.hilt.android.gradle.plugin</artifactId> <version>2.41</version> <type>pom</type> </dependency>
五、为什么改成这种方式
对于 Gradle 插件门户,该plugins { }块依赖于门户提供的 REST 服务来将插件 ID 转换为 maven 坐标。这适用于发布到门户的任何插件。 虽然工件当前直接由门户托管,但它们最初托管在 JCenter 上,因此对于在门户中未直接找到的任何内容都有一个后备重定向。这也意味着您通常可以在没有额外源的情况下解决非插件插件依赖项。 发生重定向是因为com.novoda.bintray-release已发布到 JCenter,而不是插件门户。如果您jcenter()只直接使用,您将无法解析仅在您的buildscript { }块中发布到插件门户的任何插件。使用允许您解析发布到插件门户或 JCenter(或 Maven 中心)gradlePluginPortal()的块中的任何插件,而无需关心它的发布位置或定义多个存储库。buildscript { }
六、其它插件地址
- gadle: https://repo.gradle.org/gradle/libs/
- gradle-libary: https://plugins.gradle.org/
- gradle-plugin: https://plugins.gradle.org/m2/
- google-maven(搜关键词plugin): https://maven.google.com/web/index.html?q=plugin
七、参考链接
上一篇:
Python 安装包管理工具 pip