2014-12-09 122 views
0

我试图创建一个自定义的任务/插件(都拒绝工作)在我的gradle构建脚本中使用。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做任何事情(干净,建等),我得到以下错误:

Error:(116, 0) Could not find property 'TestTask' on root project 'project'.

我在做什么错?我试图importbuild.gradle使用import mypackage.TestTask任务,但也没有工作。

它看起来像我groovy文件根本不编译,而从我读的docs gradle应该照顾编译并将它们添加到类路径中。

回答

-1

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

$GRADLE_HOME - gradle安装目录。

1

这里你去:“in-stackoverflow”解决方案。

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

不要忘记buildSrc/

apply plugin: 'groovy' 

dependencies { 
    compile gradleApi() 
    compile localGroovy() 
} 

在主文件夹中创建的build.gradle现在用你的任务创建的软件包,例如: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) 
相关问题