Когда у вас есть jar-файл плагина в пути к классам, у вас не может быть номера версии в приложении плагина. Я предполагаю, что это связано с тем, что у вас не может быть несколько банок с разными версиями в пути к классам, поэтому указывать версию здесь не имеет никакого смысла (за исключением, возможно, проверки того, что вы используете правильный). Это не решит проблему, но это только начало.
Если честно, я не знаю, почему ваш подход до сих пор не работает. Блок buildscript должен устанавливать зависимости для этого конкретного скрипта, и это должно сделать плагин видимым для него. По какой-то причине это не так.
Возможно, это ошибка или это просто недокументированное ограничение на использование блока plugin {}. Возможно, вы могли бы спросить на форумах Gradle или создать проблема для этого. Однако есть обходные пути, которые не связаны с публикацией в (локальном) репозитории Maven, что, я согласен, может немного раздражать.
Если вы используете apply from вместо plugins {}, это работает. По какой-то причине первый может видеть путь к классам buildscript, а второй - нет:
// build.gradle (Groovy DSL)
buildscript {
dependencies {
classpath(files("..\\..\\path\\to\\pluginTest.jar"))
}
}
apply from: "asdf"
Либо переместите плагин buildscript из файла build.gradle в файл settings.gradle. Это делает доступным весь путь к классам сборки и заставляет его работать с блоком плагина:
// settings.gradle (Groovy DSL):
buildscript {
dependencies {
classpath(files("..\\..\\path\\to\\pluginTest.jar"))
}
}
// build.gradle (Groovy DSL)
plugins {
id("asdf")
}
Наконец, на случай, если вы еще не рассмотрели его, вы можете добавить плагин как составная сборка. Это создаст исходную зависимость для плагина и имеет то преимущество, что транзитивные зависимости будут перенесены (те, которые вы поместили в собственный блок зависимостей плагина), и что он будет построен автоматически, если он не обновлен. Я использую этот подход для интеграционного тестирования своих плагинов, а также иногда для применения их к другим моим реальным проектам, чтобы протестировать их в более крупных настройках перед публикацией новых версий.
Сделайте это с помощью:
// settings.gradle (Groovy DSL):
includeBuild("..\\..\\path\\to\\plugin")
// build.gradle (Groovy DSL):
plugins {
id("asdf")
}
Или без жесткого кодирования его в сборке (чтобы вы могли динамически переключаться между локальной и опубликованной версиями):
// build.gradle (Groovy DSL):
plugins {
id("asdf") version "1.4.0" // Version is optional (will be ignored when the command line switch below)
}
// Run with:
./gradlew --include-build "..\\..\\path\\to\\plugin" build
person
Bjørn Vester
schedule
11.01.2021
flatDir
репозиторий? Я не привык иметь дело с локальными файлами, но думаю, это может быть похоже на stackoverflow.com/questions/20700053/ - person Joffrey   schedule 11.01.2021plugins {}
с версионным плагином не работает с такими простыми файлами, как этот. Вместо этого, может быть, вы можете простоapply<TestPlugin>()
вместо всегоplugins
блока? Они делают это так, как описано в начале этого руководства: docs.gradle. org / current / userguide / - person Joffrey   schedule 11.01.2021