Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Groovy gradle中的自定义任务/插件_Groovy_Gradle_Gradle Plugin - Fatal编程技术网

Groovy gradle中的自定义任务/插件

Groovy gradle中的自定义任务/插件,groovy,gradle,gradle-plugin,Groovy,Gradle,Gradle Plugin,我正在尝试创建一个自定义任务/插件(两者都拒绝工作),用于我的gradle构建脚本 我正在使用groovy插件,希望在单独的文件中声明任务/插件,而不是在build.gradle中 我的项目树如下所示: /project . |-gradle |-src |---main |-----groovy |-----java |-----resources |---test |-----groovy |-----java |-----resources |-build.gradle 我试图做的是在s

我正在尝试创建一个自定义任务/插件(两者都拒绝工作),用于我的gradle构建脚本

我正在使用groovy插件,希望在单独的文件中声明任务/插件,而不是在build.gradle中

我的项目树如下所示:

/project
.
|-gradle
|-src
|---main
|-----groovy
|-----java
|-----resources
|---test
|-----groovy
|-----java
|-----resources
|-build.gradle
我试图做的是在
src/main/groovy
中创建我的任务/插件类,然后在我的
build.gradle
中使用它们

让我举一个小例子

src/main/groovy/mypackage/
TestTask.groovy:

package org.gradle.mypackage

import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction

public class TestTask extends DefaultTask {

    @TaskAction
    def doAction() {

    }
}
build.gradle

plugins {
    id 'groovy'
}

sourceCompatibility = 1.7

repositories {
    mavenCentral()
}

dependencies {

    compile(
        localGroovy(),
        gradleApi()
    )

    testCompile(
        [ group: 'junit', name: 'junit', version: '4.11' ]
    )

}

task testTask(type: TestTask)
当我尝试使用gradle.build(clean、build等)执行任何操作时,会出现以下错误:

错误:(116,0)在根项目“project”上找不到属性“TestTask”

我做错了什么?我尝试使用
导入mypackage.TestTask
导入
build.gradle
中的任务,但也没有成功


在我看来,groovy文件根本不会编译,而根据我在gradle中读到的内容,我们应该负责编译并将它们添加到类路径中。

这不是它的工作方式。如果您需要提供定制插件和包中组织的任务,请将整个代码放在
buildSrc
目录下。在
$GRADLE_HOME/samples/multiProjectBuildSrc
下,您可以找到一个很好的示例,说明应该如何完成

$GRADLE\u HOME
-GRADLE安装目录。

这里是“堆栈溢出”解决方案

在项目中创建文件夹buildSrc/src/main

别忘了在buildSrc中创建build.gradle/

apply plugin: 'groovy'

dependencies {
    compile gradleApi()
    compile localGroovy()
}
现在在主文件夹中创建包含任务的包,例如:
pl.myAwesomeCompany.gradle.tasks

package pl.myAwesomeCompany.gradle.tasks

import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction
import org.gradle.api.tasks.incremental.IncrementalTaskInputs

class ExampleTask extends DefaultTask {

    @TaskAction
    void execute(IncrementalTaskInputs inputs) {
        println inputs.incremental ? "CHANGED inputs considered out of date"
            : "ALL inputs considered out of date"
    }
}
瞧!现在,在您的项目中,您可以使用您的插件:

import package pl.myAwesomeCompany.gradle.tasks.ExampleTask
task incremental(type:ExampleTask)