Подтвердить что ты не робот

Пользовательский Gradle Идентификатор плагина не найден

Я пишу плагин Gradle, и я не могу заставить команду apply plugin: работать в Gradle script, которая использует плагин. Я использую Gradle 1.1.

Я создал плагин с clean build, и теперь я пытаюсь добавить его в конструкцию Gradle через плоское репо. Кажется, что он работает, но Gradle не подбирает, что есть плагин с идентификатором test-plugin. Имя проекта в плагине settings.gradle равно test-plugin, а файл свойств в META-INF/gradle-plugins также test-plugin.properties. Я не уверен, где еще я могу указать идентификатор плагина.

Файл gradle.build в проекте, который использует test-plugin:

repositories {
  flatDir name: 'libs', dirs: "../build/libs"
}

dependencies {
  compile 'test:test-plugin:0.1'
}

apply plugin: 'test-plugin'

Ошибка Gradle:

What went wrong:
A problem occurred evaluating root project 'tmp'.
Plugin with id 'test-plugin' not found.
4b9b3361

Ответ 1

Плагин Jar должен быть добавлен как зависимость сборки script:

buildscript {
    repositories { flatDir name: 'libs', dirs: "../build/libs" }
    dependencies { classpath 'test:test-plugin:0.1' }
}

apply plugin: "test-plugin"

Ответ 2

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

Вариант 1
apply plugin: YourCustomPluginClassName

Вариант 2
plugins { id 'your.custom.plugin.id' }

apply plugin: используется при указании вашего плагина по имени класса (например, apply plugin: JavaPlugin)
plugins { } используется при указании вашего плагина по его идентификатору (например, plugins { id 'java' })
См. Gradle Plugins by tutorialspoint для справки

Если вы выберете вариант 1, ваш пользовательский плагин необходимо будет вставить в сценарий сборки одним из трех способов.
1. Вы можете написать его прямо в вашем скрипте Gradle.
2. Вы можете поместить его в buildSrc (например, buildSrc/src/main/groovy/MyCustomPlugin).
3. Вы можете импортировать свой собственный плагин в виде jar файла в методе buildscript.
 Для получения информации о методе buildscript см. Gradle Goodness by Haki.

Если вы выберете вариант 2, то вам нужно создать идентификатор плагина. Создайте следующий файл buildSrc/src/main/resources/META-INF/gradle-plugins/[required.plugin.id].properties. Скопируйте и вставьте implementation-class=desired.plugin.id в только что созданный файл .properties. Замените desired.plugin.id нужным идентификатором плагина.
См. Пользовательские плагины от Gradle для получения дополнительной информации.

Ответ 3

У меня также была та же проблема с пользовательским идентификатором плагина, который не был найден. В моем случае я просто забыл добавить файл свойств 'src/main/resources/META-INF/gradle-plugins'. Имя файла свойств должно совпадать с именем идентификатора плагина с расширением .properties.

Файл должен содержать строку:

implementation-class=(your fully qualified plugin classpath)

Что полный механизм определения идентификатора плагина для имен классов.

Кроме того, плагин должен быть добавлен как зависимость, как указано в предыдущем ответе. В документации Android говорится, что вы должны использовать имя, связанное с вашим уникальным доменным именем. Т.е. название "test-plugin" не совсем в хорошей форме, но идентификатор типа "com.foo.gradle.test-plugin" был бы лучше.