нельзя использовать плагин Gradle из источника flatDir - PullRequest
0 голосов
/ 28 февраля 2019

Примечание: Не является дубликатом с Как изменить управляющий плагин {} для управления хранилищем пользовательских плагинов? , который не распространяется на использование 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 *, который, по мнению некоторых источников, необходим, хотя я не знаю, почему это так.

...