Gradle «Неизвестное свойство»: импортирование плагина в мой пользовательский плагин - PullRequest
0 голосов
/ 10 октября 2018

Я пишу собственный плагин, задача которого заключается в выполнении вызовов HTTP-API.

Следовательно, в build.gradle моего собственного плагина я включил тег plugins ниже

plugins {
    id 'java-gradle-plugin'
    id 'groovy'
    id 'maven-publish'
    id 'io.github.http-builder-ng.http-plugin' version '0.1.1'
}

Задача в моем пользовательском плагине такова:

task makeRESTCall() {
    onlyIf {
        !inputList.empty
    }
    doLast {
        //println 'Successfully made REST Call'
        //println inputList

        def http = groovyx.net.http.HttpBuilder.configure {
            request.uri = 'http://localhost:8080'
            request.contentType = 'application/json'
            request.uri.path = '/api/v1/validate'
        }

        http.post {
            request.body = inputList.toString()
            response.success {resp, json ->
                println json
                if (!json) {
                    throw new GradleException("Validation Failed")
                }
            }
        }
    }
}

Мой пользовательский плагин получает встроенное свойство, и когда я включаю пользовательский плагин в другой проект и когда я выполняю задачу makeRESTCall, яполучите следующее исключение

Не удалось выполнить задачу «: api: makeRESTCall». Не удалось получить неизвестное свойство 'groovyx' для задачи ': api: makeRESTCall' типа org.gradle.api.DefaultTask.

http-plugin, который я импортирую в свойПользовательский плагин не импортируется должным образом в мой проект

1 Ответ

0 голосов
/ 10 октября 2018

В вашем пользовательском плагине вы используете библиотеку HTTP-Builder-NG (класс groovyx.net.http.HttpBuilder), поэтому вам необходимо настроить зависимость от этой библиотеки в вашем проекте плагина:

dependencies {
    compile "io.github.http-builder-ng:http-builder-ng-core:1.0.3"
}

Для быстрого тестирования вы можете создать следующий временный плагин в каталоге buildSrc проекта, к которому вы хотите применить плагин:

buildSrc / build.gradle

dependencies {
    compile "io.github.http-builder-ng:http-builder-ng-core:1.0.3"
}

repositories {
    mavenCentral()
}

buildSrc / src / main / groovy / com / mycompany / MyPlugin.groovy

package com.mycompany

import org.gradle.api.GradleException
import org.gradle.api.Plugin
import org.gradle.api.Project

class MyPlugin implements Plugin<Project> {
    void apply(Project project) {

        // ... your plugin login here, with 'inputList' definition

        project.task ('makeRESTCall') {
            onlyIf {
                !inputList.empty
            }
            doLast {
                //println 'Successfully made REST Call'
                println inputList

               def http = groovyx.net.http.HttpBuilder.configure{
                    request.uri = 'http://localhost:8080'
                    request.contentType = 'application/json'
                    request.uri.path = '/api/v1/validate'
                }
                http.post {
                    request.body = inputList.toString()
                    response.success {resp, json ->
                        println json
                        if (!json) {
                            throw new GradleException("Validation Failed")
                        }
                    }
                }
            }
        }
    }

build.gradle

import com.mycompany.MyPlugin
apply plugin: MyPlugin

Примечание : Я не думаю, что вам нужно применять плагин id "io.github.http-builder-ng.http-plugin" version "0.1.1", если только вы не используете HTTPTask, который предоставляет этот плагин, который является просто оболочкой Gradle Task вокругgroovyx.net.http.HttpBuilder

...