Почему в моем пользовательском файле gradle.kts в каталоге buildSrc не найдена функция публикации?
У меня есть собственный скрипт gradle.kts, который я создаю, который будет выполнять нашу maven публикацию для всех наших различных модулей в наш репозиторий sonatype, но встречает странную ошибку. Вот содержимое моего maven-deploy.gradle.kts
файл:
plugins {
`maven-publish`
signing
}
publishing {
//expression 'publishing' cannot be invoked as a function.
//The function invoke() is not found
}
Я могу запускать задачи и еще много чего maven-deploy.gradle.kts
файл в порядке, но пытается использовать publishing
Функция из документации gradle оказывается невозможной. Есть идеи? Я использую Gradle версии 4.10.3 (мне нужна поддержка Android). maven-deploy.gradle.kts
файл находится в buildSrc/src/main/kotlin
и добавляется id("maven-deploy")
в моем основном проекте build.gradle.kts
файл.
1 ответ
Это происходит потому, что Gradle только импортирует созданные сгенерированные безопасные методы доступа для Gradle Kotlin DSL в основной скрипт сборки, но не в плагины скрипта:
Только основные сценарии сборки проекта имеют типобезопасные средства доступа к моделям. Скрипты инициализации, скрипты настроек, плагины скриптов (скомпилированные или иные) не делают. Эти ограничения будут сняты в будущем выпуске Gradle.
См. Понимание, когда доступны типовые безопасные средства доступа
В упомянутом вами скрипте вы можете получить динамический доступ к расширению публикации, например, используя configure<PublishingExtension> { ... }
:
import org.gradle.api.publish.PublishingExtension
plugins {
`maven-publish`
signing
}
configure<PublishingExtension> {
// ...
}
Это описано здесь: Расширения и соглашения проекта