如果将 Gradle 插件开发为独立插件,在哪里获取项目 class?

Where to take Project class if developing Gradle plugin as standalone?

我正在尝试创建独立的 Gradle 插件,如下所述:https://docs.gradle.org/current/userguide/custom_plugins.html#N1464B

不幸的是,作者没有展示他们认为常见的东西。

特别是,他们没有说去哪里 Project class。如果我写

import org.gradle.api.Project

class GreetingPlugin implements Plugin<Project> {

}

我明白了

Groovyc: unable to resolve class org.gradle.api.Project

如何修复?

更新

构建文件:

group MYGROUP
version MYVERSION

apply plugin: 'java'
apply plugin: 'groovy'

sourceCompatibility = 1.7

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'

    compile gradleApi()
    compile localGroovy()

}

该项目是上层项目的一个模块

更新

我有以下结构:

parentproject/
  src/main/java/
     ..java files..
  build.gradle
  settings.gradle
  thisproject/
    src/main/groovy/..package../GreetingSupport.groovy
    build.gradle

我想在thisproject中开发Gradle插件,然后在parentproject中使用它,这是正常的Java项目。

所以我tried to find out how to do this a few weeks ago,发现写插件有3种选择:

1) 把你的插件放在buildSrc里面,即:

project
  |-buildSrc
  |   |-src
  |   |   \-main
  |   |       \-java
  |   |            - your.package.YourPlugin.java
  |   \-build.gradle
  |-src
  |   \-main
  |       \-java
  |            - another.package.SomeCode.java
  \-build.gradle

2) 单独写一个项目,把插件放进去,发布到本地,像普通项目一样拉入你的项目

3) 像您尝试的那样做,with some fancy hacksbuildSrc/build.gradle 文件中让它从根文件夹中的项目中加载

我选择了 1),因为它更容易起床 运行,并且感觉它会在 Gradle 的未来版本中起作用(因为这是他们记录的方法之一)