Плагин с идентификатором 'id' не найден (пользовательский плагин Gradle) - PullRequest
0 голосов
/ 01 июня 2018

Я создал простой плагин Gradle внутри проекта.В соответствии с документом все должно быть хорошо, но когда я пытаюсь использовать его, я получаю Plugin with id 'show-date-plugin' not found. Документ, на который я ссылаюсь: https://docs.gradle.org/current/userguide/custom_plugins.html

Вы можете поместить исходный код для плагина в rootProjectDirКаталог / buildSrc / src / main / groovy.Gradle позаботится о компиляции и тестировании плагина и его доступности в пути к классам скрипта сборки.Плагин видим для каждого сценария сборки, используемого сборкой.Тем не менее, он не виден за пределами сборки, и поэтому вы не можете использовать плагин вне сборки, в которой он определен.

Это мой build.gradle

plugins {
    id 'java'
    id 'groovy'
}

group 'info.garagesalesapp'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
    mavenLocal()
}

dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.4.12'
    compile gradleApi()
    compile localGroovy()
    compile project(':json-display')
    testCompile group: 'junit', name: 'junit', version: '4.12'
}
apply plugin: 'project-report'
apply plugin: 'show-date-plugin'

Этоподключается местоположение в проекте: enter image description here

Так что я делаю не так?

1 Ответ

0 голосов
/ 02 июня 2018

Вы не соблюдаете документацию.Путь в вашей цитате - rootProject/buildSrc/src/main/groovy, но вы не используете каталог buildSrc, но включаете исходный код плагина в исходные тексты вашего проекта.Поскольку эти источники создаются только в том случае, если и когда выполняются конкретные compileJava / compileGroovy, они не могут быть доступны в сценарии сборки.

Вы можете рассматривать каталог buildSrc как простой подпроекти вы также можете создать файл build.gradle там.Если вы его не создадите, будет использоваться неявное содержимое файла сборки.

Похоже, идентификаторы плагинов нельзя использовать для плагинов buildSrc.Плагины нужно применять, указав полное имя (с пакетом) класса реализации:

apply plugin: ShowDatePlugin

Если ваш плагин работает как положено, я бы предложил извлечь код в отдельный проект плагина, чтобы добиться лучшегоповторное использование.

...