如果将Gradle插件作为独立开发,可以从哪里获取Project类?

时间:2016-03-17 16:48:47

标签: gradle groovy gradle-plugin

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

不幸的是,作者没有表现出他们看起来很普遍的东西。

特别是,他们不知道在哪里上Project课。如果我写

import org.gradle.api.Project

class GreetingPlugin implements Plugin<Project> {

}

我得到了

  

Groovyc:无法解析类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项目。

1 个答案:

答案 0 :(得分:2)

所以我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)就像你在buildSrc/build.gradle文件中尝试with some fancy hacks一样,让它加载出根文件夹中的项目

我选择了1)因为它更容易启动和运行,并且觉得它可以在未来的Gradle版本中运行(因为它是他们记录的方式之一)