如何查找给定 gradle 库的 gradle 插件 id?

问题描述 投票:0回答:3

我目前正在更新我的项目,作为步骤之一,我正在更改 gradle 文件以使用

plugins { id 'xxx' }
方式而不是旧的
apply plugin 'xxx'
方法。我能够将大部分导入迁移到新格式,但是我无法添加一些插件,因为我无法找到它们的 gradle 插件 ID。

例如,这是我的旧 gradle 文件:

settings.gradle 文件

include ':app'

项目的build.gradle文件

buildscript {
    repositories {
        google()
        mavenCentral()
        (...)
    }
    dependencies {
        (...)
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.0'
        classpath 'com.google.android.gms:oss-licenses-plugin:0.10.5'
    }
}
(...)

模块的build.gradle文件

apply plugin: 'com.android.application'
apply plugin: 'com.google.firebase.crashlytics'
apply plugin: 'com.google.android.gms.oss-licenses-plugin'
(...)

这里是部分修改的新 gradle 文件:

settings.gradle 文件

pluginManagement {
    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}
rootProject.name = "xxxx"
include ':app'

项目的build.gradle文件

plugins {
    id 'com.android.application' version '7.3.1' apply false
    id 'com.google.firebase.crashlytics' version '2.9.2' apply false
    // DOESN'T WORK:
    id 'com.google.android.gms.oss-licenses-plugin' version '0.10.5' apply false
}
(...)

模块的build.gradle文件

plugins {
    id 'com.android.application'
    id 'com.google.firebase.crashlytics'
    // NEED TO SET SAME ID AS IN PROJECT'S GRADLE FILE PROBABLY:
    id 'com.google.android.gms.oss-licenses-plugin'
    (...)
}

问题在于如何获取给定插件的 gradle 插件 id? 许多插件安装说明使用旧的

apply plugin
方法,我不想混合使用它们。

例如,在类路径为

com.google.firebase:firebase-crashlytics-gradle
的 Crashlytics 中,id 为
com.google.firebase.crashlytics
- 我怎么知道这一点?我在 Stackoverflow 上的一个答案中找到了这一点,但没有关于某人如何知道这一点的信息。

目前我正在尝试添加 oss-licenses-plugin,但我完全不知道如何找到它的 gradle 插件 id... 有什么建议吗?

或者也许不能保证使用

classpath
添加的每个插件都可以转换为新的
plugins { }
方式?既然如此,我怎么能看出是这种情况呢?

android android-gradle-plugin build.gradle
3个回答
8
投票

插件发布者需要遵循某种模式,以便 Gradle 找到插件实现。

properties
文件需要包含在 JAR 的
META-INF/gradle-plugins
目录中。并且该文件的名称需要按以下方式格式化:

<plugin-id>.properties

在这个文件中,定义了插件实现:

implementation-class=<com.example.SomePluginImpl>

因此,要回答您的问题,您需要获取 JAR 并查看其内容以找出 id:

META-INF/gradle-plugins/<plugin-id>.properties

对于

com.google.android.gms.oss-licenses-plugin
,我在这里检查:链接。或者,您可以从 Maven 获取 JAR,提取其内容并检查 properties 文件:Link

代码的另一个问题是,对于外部插件解析,您需要在

resolutionStrategy
下定义
pluginManagement
:

pluginManagement {
    resolutionStrategy {
        eachPlugin {
            if (requested.id.id == 'com.google.android.gms.oss-licenses-plugin') {
                useModule "com.google.android.gms:oss-licenses-plugin:${requested.version}"
            }
        }
    }
    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
    }
}

现在您应该能够在项目级别

build.gradle
中使用 id 'com.google.android.gms.oss-licenses-plugin' version '0.10.5' apply false


1
投票

根据gradle docs,你可以在这里

找到注册的插件

并非所有 gradle 插件都可用,因为开发者需要先将插件发布到 gradle,这里如何发布插件https://plugins.gradle.org/docs/publish-plugin

编辑: 我试图找到 oss-licenses-plugin,但没有成功。所以你应该使用旧的方法来应用插件。

其他信息:应用gradle插件有什么区别


© www.soinside.com 2019 - 2024. All rights reserved.