Ответ 1
Плагин Jar должен быть добавлен как зависимость сборки script:
buildscript {
repositories { flatDir name: 'libs', dirs: "../build/libs" }
dependencies { classpath 'test:test-plugin:0.1' }
}
apply plugin: "test-plugin"
Я пишу плагин 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.
Плагин Jar должен быть добавлен как зависимость сборки script:
buildscript {
repositories { flatDir name: 'libs', dirs: "../build/libs" }
dependencies { classpath 'test:test-plugin:0.1' }
}
apply plugin: "test-plugin"
Если вы хотите внедрить плагин в свой сборочный скрипт, у вас есть два варианта.
Вариант 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 для получения дополнительной информации.
У меня также была та же проблема с пользовательским идентификатором плагина, который не был найден. В моем случае я просто забыл добавить файл свойств 'src/main/resources/META-INF/gradle-plugins'. Имя файла свойств должно совпадать с именем идентификатора плагина с расширением .properties.
Файл должен содержать строку:
implementation-class=(your fully qualified plugin classpath)
Что полный механизм определения идентификатора плагина для имен классов.
Кроме того, плагин должен быть добавлен как зависимость, как указано в предыдущем ответе. В документации Android говорится, что вы должны использовать имя, связанное с вашим уникальным доменным именем. Т.е. название "test-plugin" не совсем в хорошей форме, но идентификатор типа "com.foo.gradle.test-plugin" был бы лучше.