Примечание: Не является дубликатом с Как изменить управляющий плагин {} для управления хранилищем пользовательских плагинов? , который не распространяется на использование flatDir
.
Вопрос
Как использовать плагин Gradle, определенный в локальном JAR, с использованием новой семантики plugin {}
вместо устаревшей семантики apply()
?
Текущий статус
Не имея никакого разрешения, после публикации вопроса и значительного поиска, Я подал вопрос , задаваясь вопросом, не поддерживается ли это использование, которое должно быть обычным и простым,либо по замыслу, либо по недосмотру, в рамках пересмотренной семантики плагина Gradle.
К сожалению, мой отчет был закрыт без полезной информации.
Я запросил разъяснения, но все еще жду, пишу это обновление 19 дней спустя.
Я разочарован, ожидая, что сообщество будет заинтересовано хотя бы обсудить эту проблему.
Если вы можете предоставить информацию, пожалуйста, сделайте это.
Первое обновление
После разъяснения о новом стиле настройки источников плагинов я обновил файл settings.gradle
, чтобы открыть его следующим блоком.Тем не менее, я сожалею, что не вижу улучшения только за счет этих изменений.(Для поля идентификатора плагина, на которое есть ссылка в файле build.gradle
, я попробовал как глобальный идентификатор, опубликованный в метаданных JAR, так и базовое имя файла JAR. Оба файла одинаково не работают.)
pluginManagement {
repositories {
gradlePluginPortal()
jcenter()
flatDir {
dirs 'lib`'
}
}
}
Документация объясняет, как использовать пользовательские репозитории, но, как представляется, упускает из виду случай тривиального плоского каталога.
Второе обновление
Я получаю некоторое улучшение, если я добавляю номер версии в файл JAR исоответствующий оператор в блоке plugins {}
.В этом случае сообщение становится:
Plugin [id: 'plugin-id', version: '1.0.0'] was not found in any of the following sources:
- Gradle Core Plugins (plugin is not in 'org.gradle' namespace)
- Plugin Repositories (could not resolve plugin artifact 'plugin-id:plugin-id.gradle.plugin:1.0.0')
Searched in the following repositories:
Gradle Central Plugin Repository
BintrayJCenter
flatDir(/absolute/path/to/lib)
В этом случае каталог добавляется в список искомых источников.
Странно, что добавляется суффикс .gradle.plugin
на мое удостоверение личности в напечатанном артефакте.Также странно, что добавление номера версии в то, что ищется, влияет на список ищущих мест .
Так что мой проект по-прежнему не может быть собран.Я ценю любую дополнительную помощь.
Исходный фон
Я поместил JAR-файл, содержащий определение пользовательского плагина, в каталог lib
проекта.При использовании файла сборки build.gradle
, как показано ниже, сборка выполняется успешно.
buildscript {
repositories {
flatDir {
dirs 'lib'
}
}
}
apply plugin: 'plugin-id'
Однако семантика apply()
устарела, вместо блока plugins {}
, поэтому я попытался обновить файл сборки, как показано ниже.
plugins {
id 'plugin-id'
}
repositories {
flatDir {
dirs 'lib'
}
}
Я понимаю, что содержимое plugins {}
может опираться на определения repositories {}
.
Однако изменение приводит к ошибке:
* What went wrong:
Plugin [id: 'plugin-id'] was not found in any of the following sources:
- Gradle Core Plugins (plugin is not in 'org.gradle' namespace)
- Plugin Repositories (plugin dependency must include a version number for this source)
Сохранение блока plugin {}
, но перемещение блока repositories {}
обратно в ведущий блок buildscript {}
не устраняет ошибку.То есть ошибка сохраняется, даже если я возвращаюсь к более ранней версии, заменяя только оператор apply()
на блок plugin {}
.
Наконец, он не имеет никакого эффекта для добавления в блок repositories {}
a *Блок 1085 *, который, по мнению некоторых источников, необходим, хотя я не знаю, почему это так.