Моя проблема в том, что я не могу найти JibExtension
Плагины или расширения могут применяться различными способами. Вы можете «реагировать» на применяемый плагин, используя withPlugin метод PluginManager
:
class JibConfigPlugin : Plugin<Project> {
override fun apply(project: Project) {
project.pluginManager.withPlugin("com.google.cloud.tools.jib") {
// Configuration happens inside this Action block.
}
}
}
Используя этот метод, вы можете быть уверены, что плагин существует / был примененбез принуждения пользователя / проекта к использованию плагина.
Плагин Jib предлагает одно расширение и множество задач.
Конфигурирование расширения может быть выполнено с помощью следующих действий:
class JibConfigPlugin : Plugin<Project> {
override fun apply(project: Project) {
project.pluginManager.withPlugin("com.google.cloud.tools.jib") {
project.extensions.configure<JibExtension> {
// Example configuring the `container`
container {
creationTime = "USE_CURRENT_TIMESTAMP"
}
}
}
}
}
Рассматривая источник плагина Gradle для Jib, авторы использовали ленивая конфигурация для задач, поэтому лучше использовать тот же метод для настройки этихЗадачи.
Например, для настройки задачи jib
:
class JibConfigPlugin : Plugin<Project> {
override fun apply(project: Project) {
project.pluginManager.withPlugin("com.google.cloud.tools.jib") {
project.tasks.named<BuildImageTask>("jib") {
to {
setTargetImage("my_acr_name.azurecr.io/my-app")
}
}
}
}
}
Выше используется метод named
, который возвращает TaskProvider
Затем просто примените ваш плагин, как описано здесь: https://guides.gradle.org/writing-gradle-plugins/#apply_the_plugin_to_the_host_project
Источник build.gradle.kts
, который я использовал для тестирования:
plugins {
`kotlin-dsl`
}
repositories {
gradlePluginPortal()
}
dependencies {
implementation("gradle.plugin.com.google.cloud.tools:jib-gradle-plugin:1.7.0")
}