Gradle 如何在groovy插件中使用插件

Gradle 如何在groovy插件中使用插件,gradle,groovy,Gradle,Groovy,我正在尝试将任务从build.gradle迁移到一个插件中。 在我的build.gradle中,我执行以下操作: plugins { //id 'java' id 'war' //https://plugins.gradle.org/plugin/org.gretty id 'org.gretty' version '3.0.1' id "com.github.dkorotych.gradle-maven-exec" version "2.2.1"

我正在尝试将任务从build.gradle迁移到一个插件中。 在我的build.gradle中,我执行以下操作:

plugins {
    //id 'java'
    id 'war'

    //https://plugins.gradle.org/plugin/org.gretty
    id 'org.gretty' version '3.0.1'

    id "com.github.dkorotych.gradle-maven-exec" version "2.2.1"

}
apply plugin: 'maven'

....
....

prepareFrontEnd (type: MavenExec, dependsOn: build) {
    goals 'vaadin:prepare-frontend'
}


task buildFrontEnd (type: MavenExec, dependsOn: prepareFrontEnd) {
    goals 'vaadin:build-frontend'
}
现在我把这些东西转移到一个插件上:

package com.github.mdre.hgvaadinplugin

import org.gradle.api.Plugin;
import org.gradle.api.Project;
//import com.github.dkorotych.gradle.maven.exec.MavenExec;


class HGVaadinPlugin implements Plugin<Project> {

    @Override
    void apply(Project project) {
        println "Hybrid Gradle Vaaadin plugin."
        project.plugins.apply('com.github.dkorotych.gradle-maven-exec')
        // project.getPluginManager().apply('gradle-maven-exec-plugin')

        project.task('prepareFrontEnd', type: MavenExec){
            dependsOn build
            doLast {
                goal 'vaadin:prepare-frontend'
            }
        }
    }
}
如果我对导入行进行注释,则在使用插件的项目中会出现以下错误:

  • 出了什么问题: 评估根项目“VaadinFlowLab”时出现问题。 未能应用插件[id'com.github.mdre.hgvaadinplugin'] 类:com.github.mdre.hgvaadinplugin.hgvaadinplugin没有这样的属性:MavenExec

我怎么能这样做

谢谢。

好吧,我修好了

我忘了在最后一个jar中包含依赖类。因此,我所需要的只是将其添加到build.config中:

configurations {
    // configuration that holds jars to include in the jar
    extraLibs
}

dependencies {
    ....
    ....
    //necesario para crear un fatJar
    extraLibs "gradle.plugin.com.github.dkorotych.gradle.maven.exec:gradle-maven-exec-plugin:2.2.1"
    configurations.compile.extendsFrom(configurations.extraLibs)
}

jar {
    from {
        configurations.extraLibs.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

现在它正在工作

您可能希望将
gradlemaven exec
作为一个依赖项(如果您在项目中内联编写插件,则需要buildSrc依赖项)
configurations {
    // configuration that holds jars to include in the jar
    extraLibs
}

dependencies {
    ....
    ....
    //necesario para crear un fatJar
    extraLibs "gradle.plugin.com.github.dkorotych.gradle.maven.exec:gradle-maven-exec-plugin:2.2.1"
    configurations.compile.extendsFrom(configurations.extraLibs)
}

jar {
    from {
        configurations.extraLibs.collect { it.isDirectory() ? it : zipTree(it) }
    }
}