gradle - 如果将 Gradle 插件作为独立开发,在哪里学习 Project 类(class)?

标签 gradle groovy gradle-plugin

我正在尝试创建独立的 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 , IE:

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 的 future 版本中工作(因为这是他们记录的方式之一)

关于gradle - 如果将 Gradle 插件作为独立开发,在哪里学习 Project 类(class)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36066857/

相关文章:

gradle - Gradle插件兼容性-如何查找?

android - Gradle - 哪个任务创建了 'build' 目录?

groovy - 如何将参数传递给 Groovy 2.0 脚本?

java - 如何使用 Gradle java 插件将 "illegal-access=deny"传递给单元测试的 JVM 参数?

android - 无法在 Android Studio 1.3 中将 gradle 插件更新为 1.3.0-beta4

android - Android Studio 2.2.2中的Gradle同步错误

gradle - 在插件中扩展TestCompile和TestRuntime

grails - 在 Controller 中覆盖 Getter

java - Jenkins 管道异常 java.io.NotSerializedException : hudson. model.User

gradle - 如何在build.gradle中定义Map <String,CustomObject>