Почему я получаю UnknownPluginException при попытке использовать пользовательский плагин компилятора Kotlin в Gradle? - PullRequest
1 голос
/ 25 апреля 2019

Я создал собственный плагин компилятора Kotlin для Gradle. Он был вдохновлен kotlin-allopen (2) и sample-kotlin-compiler-plugin и должен сделать все классы Kotlin не финальными.

Проблема в том, что я не могу использовать его в своих проектах, я получаю только следующее:

Caused by: org.gradle.api.plugins.UnknownPluginException: Plugin with id 'no.synth.kotlin.plugins.kotlin-really-allopen' not found.
    at org.gradle.api.internal.plugins.DefaultPluginManager.apply(DefaultPluginManager.java:131)

Я пробовал оба «новых» синтаксиса плагина:

plugins {
  id "no.synth.kotlin.plugins.kotlin-really-allopen" version "0.1"
}

.. и старый:

buildscript {
  repositories {
    mavenLocal()
  }
  dependencies {
    classpath "no.synth.kotlin.plugins:kotlin-really-allopen:0.1" 
  }
}

apply plugin: "kotlin-really-allopen" // I've tried "no.synth.kotlin.plugins.kotlin-really-allopen" as well

Так что я делаю не так? Вот плагин: https://github.com/henrik242/kotlin-really-allopen

РЕДАКТИРОВАТЬ: я обновил хранилище с примером приложения и README.md, чтобы легко воспроизвести проблему.

Ответы [ 2 ]

1 голос
/ 26 апреля 2019

Ваш плагин Gradle, похоже, не содержит записи под META-INF/gradle-plugins.

Gradle требует, чтобы каждый идентификатор плагина был сопоставлен с классом реализации, и это сопоставление хранится в META-INF/gradle-plugins ресурсах.

Чтобы отобразить идентификатор плагина kotlin-really-allopen, вам понадобится файл ресурса. src/main/resources/META-INF/gradle-plugins/kotlin-really-allopen.properties.

См .: Подключение для пользовательского плагина

Вы также можете использовать Плагин разработки Gradle Plugin , который автоматически генерирует эти записи из сценария сборки DSL.


Кроме того, ваш репозиторий, похоже, не содержит фактической реализации плагина Gradle, есть только часть, которую должен загрузить компилятор. Для примера, который также содержит часть Gradle, взгляните на kevinmost / debuglog .

0 голосов
/ 25 апреля 2019

Перемещение apply plugin: "kotlin-really-allopen" в вашем build.gradle модульном приложении вверху

...