plugins - Gradle插件开发错误传递参数

标签 plugins groovy gradle build.gradle

我试图按照以下示例创建自定义gradle插件:http://www.javacodegeeks.com/2012/08/gradle-custom-plugin.html。只要我不尝试为任务提供参数,一切都会正常,但是,当我尝试添加参数时,出现以下错误:

Error:(26, 0) Task of type 'com.jwoolston.finalizer.gradle.FinalizerTask_Decorated' has been instantiated directly which is not supported. Tasks can only be created using the DSL.



我已经用谷歌搜索过,但似乎没有得到与我的情况有关的任何结果(至少不是我所了解的结果)。

插件的简短ID在生成的jar list 中声明为:finalizer-plugin

我有以下文件:

FinalizerPlugin.groovy
class FinalizerArgumentExtension {
    String path = ''
}

class FinalizerPlugin implements Plugin<Project> {

    @Override
    void apply(Project project) {
        project.extensions.create('finalizeArgs', FinalizerArgumentExtension)
        project.task('finalizeTask', type: FinalizerTask)
    }
}

FinalizerTask.groovy
class FinalizerTask extends DefaultTask {

    @TaskAction
    def executeTask() {
        println "------------executeTask-------------------"
        println "Source Directory : ${project.finalizeArgs.path}"
    }
}

使用项目的 build.gradle 的插件相关摘录:
apply plugin: 'java'
apply plugin: 'maven'

version = '1.0.0'

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
}

buildscript {
    repositories {
        maven {
            url uri("file://C:\\Users\\ideal\\.m2\\repository")
        }
    }
    dependencies {
        classpath group: 'com.jwoolston.finalizer',
                name: 'gradle',
                version: '1.0.1-SNAPSHOT'
    }
}

apply plugin: 'finalizer-plugin'

finalizeArgs {
    path = "src/main/java"
}

简而言之,我不明白该错误。据我所知,一切都与本教程相符。我试图简单地将字符串参数传递给插件的任务。

最佳答案

插件类需要固定如下:

class FinalizerPlugin implements Plugin<Project> {
    @Override
    void apply(Project project) { ... }
}

Groovy仅支持对双引号字符串进行字符串插值:
println "Source Directory : ${project.finalizeArgs.path}"

关于plugins - Gradle插件开发错误传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27307578/

相关文章:

java - Java 类上的 .1 .2 .3 .4 有何用途(如方法或属性)?

javascript - Timeglider 对象始终保持为空且未定义

java - gradle 2.2.2,android studio,没有方法签名:java.lang.Boolean.call()适用于参数类型:

gradle - 将 buildscipt 依赖项添加到多个 gradle 文件的常用方法

javascript - nyroModal 尺寸不适用于版本 2

Android Studio 和 Bitbucket 插件

java - 解码 UTF-8 电子邮件主题?

gradle - Gradle Groovy插件是否支持连续构建?

android - 如何使用 Intellij IDEA 中的 UMLGraph 创建 javadoc

java - Java Android应用程序打开后迅速关闭