Groovy gradle中的自定义任务/插件
我正在尝试创建一个自定义任务/插件(两者都拒绝工作),用于我的gradle构建脚本 我正在使用groovy插件,希望在单独的文件中声明任务/插件,而不是在build.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
/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)