Применить пользовательский плагин Gradle локально в том же проекте - PullRequest
0 голосов
/ 23 мая 2018

Я написал плагин Gradle, который хочу использовать только в моем собственном проекте.Вот упрощенная файловая структура:

/root project
  |
  + build.gradle
  + settings.gradle
  + build/
  + some module/
      |
      + build.gradle
      + src/
      + build/
      + plugin/
         |
         + build.gradle
         + src/
         + build/

Я добавляю плагин в модуль, ссылаясь на файл jar

// From '/some module/build.gradle'

buildscript {
  dependencies {
    classpath files('./plugin/build/libs/payload-plugin-0.0.1-SNAPSHOT.jar')
  }
}

apply plugin: 'my-custom-plugin'

Сначала он работает нормально, но есть проблема.Если вы очистите проект и попытаетесь построить его снова, он потерпит неудачу, поскольку './plugin/build/libs/payload-plugin-0.0.1-SNAPSHOT.jar' больше не существует и не будет пытаться перестроить модуль плагина, поскольку это считается ошибкой конфигурации.

Я пытался создать плагин только с использованием gradlew :somemodule:plugin:build, но сначала он проверяет скрипт компоновки `: somemodule ', поэтому он не работает.

Также пробовал classpath project(':somemodule:plugin') вместо ссылки на jar,но он говорит, что плагин не найден.

1 Ответ

0 голосов
/ 23 мая 2018

Смешивание кода для вашего подключаемого модуля Gradle с кодом проекта, который должен помочь в создании этого модуля, вероятно, является плохой идеей.

Вы должны проверить документацию gradle по , которая организует логику сборки , и, в частности, я бы, вероятно, начал с того, что поместил ваш исходный код плагина в каталог buildSrc .

Если вы поместите исходный код плагина в каталог с именем buildSrc, как указано в документации выше, он будет автоматически скомпилирован и включен в ваш путь к классу сборки.Он также не будет удален при очистке вашего проекта.Все, что вам действительно нужно, это оператор apply plugin: x.

Следует отметить, что, хотя buildSrc удобен, он все еще на стадии разработки вашего плагина.Если вы намереваетесь использовать плагин чаще, в большем количестве мест или иным образом делиться им, то, вероятно, будет полезно создать банку с плагином.

...