未找到 id 为“id”的插件(gradle 自定义插件)

IKo*_*IKo 5 gradle gradle-plugin

我在项目中创建了一个简单的 gradle 插件。根据文档,它应该没问题,但是当我尝试使用它时,我得到了Plugin with id 'show-date-plugin' not found. 我指的文档: https: //docs.gradle.org/current/userguide/custom_plugins.html

您可以将插件的源代码放在 rootProjectDir/buildSrc/src/main/groovy 目录中。Gradle 将负责编译和测试插件,并使其在构建脚本的类路径上可用。该插件对于构建使用的每个构建脚本都是可见的。但是,它在构建之外不可见,因此您无法在定义它的构建之外重用该插件。

这是我的build.gradle

plugins {
    id 'java'
    id 'groovy'
}

group 'info.garagesalesapp'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
    mavenLocal()
}

dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.4.12'
    compile gradleApi()
    compile localGroovy()
    compile project(':json-display')
    testCompile group: 'junit', name: 'junit', version: '4.12'
}
apply plugin: 'project-report'
apply plugin: 'show-date-plugin'
Run Code Online (Sandbox Code Playgroud)

这是项目中的插入位置: 在此输入图像描述

那么我做错了什么?

Luk*_*fer 3

您没有遵循文档。您引用中的路径是rootProject/buildSrc/src/main/groovy,但您不使用该buildSrc目录,而是将插件源代码包含到项目源中。由于这些源仅在执行特定compileJava/时才会构建compileGroovy,因此它们在构建脚本中不可用。

您可以将该buildSrc目录视为一个简单的子项目,也可以build.gradle在其中创建文件。如果您不创建,则将使用隐式构建文件内容。

插件 ID 似乎不能用于buildSrc插件。插件需要通过指定实现类的全名(带包)来应用:

apply plugin: ShowDatePlugin
Run Code Online (Sandbox Code Playgroud)

如果您的插件按预期工作,我建议将代码提取到单独的插件项目中,以实现更好的可重用性。