无法加载类插件

Tho*_*y84 5 android gradle android-gradle-plugin

我正在尝试生成第一个插件,但出现此错误:
无法找到 jar:file
org.gradle.api.plugins.InvalidPluginException 中指定的插件“common-plugin”的实现类“CommonPluginClass”:应用插件请求时发生异常[ id: '通用插件']

在此输入图像描述
这是我的CommonPluginClass

class CommonPluginClass: Plugin<Project> {

    override fun apply(project: Project) {
        project.task("hello") {
            doLast {
                println ("Hello from the CommonPluginClass")
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这很简单。我的 build.gradle (约定)

plugins {
    id 'groovy-gradle-plugin'
}

gradlePlugin {
    plugins {
        commonPlugin {
            id = "common-plugin"
            implementationClass = "CommonPluginClass"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

并进入settings.gradle(构建逻辑)

dependencyResolutionManagement {
    repositories {
        google()
        mavenCentral()
    }
}

rootProject.name = "build-logic"
include(":convention")
Run Code Online (Sandbox Code Playgroud)

在 build.gradle (应用程序)中,我以这种模式调用插件:
plugins { id 'common-plugin' }
我的例外:

  • 出了什么问题:应用插件请求 [id: 'common-plugin'] 时发生异常,
    无法找到 jar:file:/C:/Users/User/ 中指定的插件 'common-plugin' 的实现类 'CommonPluginClass.kt' .gradle/caches/jars-9/*****/convention.jar!/META-INF/gradle-plugins/common-plugin.properties。
    我想保留这棵树,我做错了什么?

Abd*_*sam 5

也许已经晚了

我遇到了同样的问题,我通过将插件文件夹移动到 kotlin 目录本身并从所有插件类中删除包引用来解决它。

请参阅屏幕截图中的 kotlin 目录


Chr*_*iki 3

简而言之

\n

plugins你基本上应该通过改变你的块来让它工作build-logic/convention/build.gradle更改为如下所示来

\n
plugins {\n    id \'java-gradle-plugin\'\n    id \'org.jetbrains.kotlin.jvm\' version \'1.6.21\'\n}\n
Run Code Online (Sandbox Code Playgroud)\n

更详细

\n

我已复制您设置的相关部分,如下所示(未显示 Gradle Wrapper 文件):

\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 app\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 build.gradle\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build-logic\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 convention\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build.gradle\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 kotlin\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0             \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 CommonPluginClass.kt\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 settings.gradle\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 settings.gradle\n
Run Code Online (Sandbox Code Playgroud)\n

这些文件的内容与您的问题中给出的内容相同,只是 I\xe2\x80\x99 更改了下面的文件。

\n

这样,我就可以成功运行:./gradlew :app:hello

\n

build-logic/convention/build.gradle

\n
plugins {\n    id \'java-gradle-plugin\'\n    id \'org.jetbrains.kotlin.jvm\' version \'1.6.21\'\n}\n\ngradlePlugin {\n    plugins {\n        commonPlugin {\n            id = "common-plugin"\n            implementationClass = "CommonPluginClass"\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

build-logic/convention/src/main/kotlin/CommonPluginClass.kt

\n
import org.gradle.api.Project\nimport org.gradle.api.Plugin\n\nclass CommonPluginClass: Plugin<Project> {\n\n    override fun apply(project: Project) {\n        project.task("hello") { t ->\n            t.doLast {\n                println ("Hello from the CommonPluginClass")\n            }\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

settings.gradle

\n
pluginManagement {\n    includeBuild(\'build-logic\')\n}\n\ninclude \':app\'\n
Run Code Online (Sandbox Code Playgroud)\n