Ошибка Gradle: не удалось найти метод jar () для аргументов - PullRequest
0 голосов
/ 28 июня 2019

Я пишу собственный плагин, который добавляет некоторые данные в манифест Java-проекта.

Это выглядит примерно так:

package com.example.gradle

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

public class ExamplePlugin implements Plugin<Project> {

    def apply(Project project) {
        project.jar() {
            manifest {
                attributes 'buildServer': checkIfIsBuildServer()
                attributes 'personalBuild': checkIfIsPersonalBuild()
            }
        }
    }

    def checkIfIsBuildServer() {
        return 'some result'
    }

    def checkIfIsPersonalBuild() {
        return 'some result'
    }

}

Когда я пытаюсь применить его кВ каком-то проекте я получаю сообщение об ошибке:

Could not find method jar() for arguments [com.example.gradle.ExamplePlugin$_apply_closure1@411e4f5e] on project ':SomeProject' of type org.gradle.api.Project.

Я уверен, что это какой-то недостающий импорт.Я понятия не имею, как определить, каким должен быть импорт.

1 Ответ

1 голос
/ 28 июня 2019

jar() не является методом для Project.

Если я правильно понимаю ваш код, то вы пытаетесь настроить задачу jar, созданную из Java Plugin .

Так что вам нужно:

  1. Получить задание
  2. Настройка задачи

Что-то вроде:

import org.gradle.api.plugins.JavaPlugin
import org.gradle.api.tasks.bundling.Jar

public class ExamplePlugin implements Plugin<Project> {
    def apply(Project project) {
        project.afterEvaluate {
            project.tasks.named(JavaPlugin.JAR_TASK_NAME, Jar) {
                it.manifest {
                    attributes 'buildServer': checkIfIsBuildServer()
                    attributes 'personalBuild': checkIfIsPersonalBuild()
                }
            }
        }
    }

    def checkIfIsBuildServer() {
        'some result'
    }

    def checkIfIsPersonalBuild() {
        'some result'
    }
}

Я очень рекомендую перейти на Kotlin или Java для вашего плагина. Это позволит исправлять ошибки, подобные этой тривиальной, и вы полностью поймете, откуда происходят вещи, по сравнению с динамической природой Groovy.

...