id为';id';未找到(gradle自定义插件)

id为';id';未找到(gradle自定义插件),gradle,gradle-plugin,Gradle,Gradle Plugin,我在项目内部创建了一个简单的gradle插件。根据文档,应该没问题,但是当我尝试使用它时,我得到了id为“show date Plugin”的插件。 我指的是医生: 您可以将插件的源代码放入 rootProjectDir/buildSrc/src/main/groovy目录。格雷德尔会接受的 注意编译和测试插件,并在 生成脚本的类路径。每个人都可以看到这个插件 生成所使用的生成脚本。但是,它在外部不可见 因此,您不能在构建之外重用插件 定义于 这是我的build.gradle plugins

我在项目内部创建了一个简单的gradle插件。根据文档,应该没问题,但是当我尝试使用它时,我得到了id为“show date Plugin”的插件。 我指的是医生:

您可以将插件的源代码放入 rootProjectDir/buildSrc/src/main/groovy目录。格雷德尔会接受的 注意编译和测试插件,并在 生成脚本的类路径。每个人都可以看到这个插件 生成所使用的生成脚本。但是,它在外部不可见 因此,您不能在构建之外重用插件 定义于

这是我的
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'
这是项目中的插件位置:


那么我做错了什么呢?

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

您可以将
buildSrc
目录看作一个简单的子项目,也可以在那里创建
build.gradle
文件。如果不创建,将使用隐式生成文件内容


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

apply plugin: ShowDatePlugin

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

我只是按照您所说的做了所有事情,但仍然出现相同的错误。这简直要了我的命)似乎插件ID不能用于
buildSrc
插件。您需要通过其包路径应用插件:
apply plugin:package.path.to.ImplementationClass
。我只是测试了两种方法,只有这一种有效。没有帮助。如果你有几分钟的时间,你能看一下我的项目吗?我把它推到github上,我编辑了我的答案并添加了一个代码示例。你能试试这个吗?对于您目前使用的软件包,您需要使用
apply-plugin:org.kokoko.ShowDatePlugin
。另外,为了进一步参考,项目中的
.properties
文件路径错误。尝试
apply plugin:org.kokoko.ShowDatePlugin
没有帮助