Gradle 如何在buildSrc kotlin文件中配置Jib扩展名?

Gradle 如何在buildSrc kotlin文件中配置Jib扩展名?,gradle,kotlin,jib,Gradle,Kotlin,Jib,我正在尝试模块化我的build.gradle.kts。有人建议我创建一个buildSrc文件夹。 经过一些研究和som询问,我发现了这篇文章,因此这是我的尝试: buildSrc树: buildSrc/ ├── build.gradle.kts ├── settings.gradle.kts └── src └── main ├── kotlin │   ├── Docker.kt │   ├── MyProjectExtensions.k

我正在尝试模块化我的
build.gradle.kts
。有人建议我创建一个
buildSrc
文件夹。 经过一些研究和som询问,我发现了这篇文章,因此这是我的尝试:

buildSrc
树:

buildSrc/
├── build.gradle.kts
├── settings.gradle.kts
└── src
    └── main
        ├── kotlin
        │   ├── Docker.kt
        │   ├── MyProjectExtensions.kt
        │   └── Versions.kt
        └── resources
            └── META-INF
                └── gradle-plugins
                    └── pt.branden.brandenportal.properties
我的
build.gradle.kts

plugins {
    `kotlin-dsl`
    id("com.google.cloud.tools.jib") version Versions.jib
}

repositories {
    mavenCentral()
    google()
    jcenter()
}

dependencies {
    implementation("gradle.plugin.com.google.cloud.tools:jib-gradle-plugin:${Versions.jib}")
    implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50")
    implementation(gradleApi())
    implementation(localGroovy())
}
最后,
Docker.kt

import org.gradle.api.Plugin
import org.gradle.api.Project


open class JibConfigPlugin : Plugin<Project> {
    override fun apply(target: Project) {
        //configureJib()
        TODO("not implemented")
    }

}

//internal fun Project.configureJib() = this.extensions.getByType<JibExtension>().run {}
internal fun Project.configureJib() = project.configure<JibExtension>() {
  TODO("not implemented")
}
import org.gradle.api.Plugin
导入org.gradle.api.Project
开放类JibConfigPlugin:插件{
覆盖应用(目标:项目){
//configureJib()
待办事项(“未实施”)
}
}
//内部fun项目.configureJib()=this.extensions.getByType().run{}
内部fun Project.configureJib()=Project.configure(){
待办事项(“未实施”)
}
我的问题是我找不到
Jib扩展
,因此当我尝试实现和配置Jib时,它不起作用,但在
build.gradle.kts
中,一切都起作用

我的问题是找不到
jib扩展名

插件或扩展可以以多种不同的方式应用。您可以使用
PluginManager
的方法对应用的插件做出“反应”:

class JibConfigPlugin : Plugin<Project> {

    override fun apply(project: Project) {
        project.pluginManager.withPlugin("com.google.cloud.tools.jib") {
            // Configuration happens inside this Action block.
        }
    }
}
上面使用的方法返回

然后,只需按照此处的说明应用插件即可:


我用来测试的
build.gradle.kts的源代码:

plugins {
    `kotlin-dsl`
}

repositories {
    gradlePluginPortal()
}

dependencies {
    implementation("gradle.plugin.com.google.cloud.tools:jib-gradle-plugin:1.7.0")
}

我认为我有正确的dependencyNotation,但不幸的是没有。所以我的问题是如何找到正确的dependencyNotation来放入实现函数中?
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")
                }
            }
        }
    }
}
plugins {
    `kotlin-dsl`
}

repositories {
    gradlePluginPortal()
}

dependencies {
    implementation("gradle.plugin.com.google.cloud.tools:jib-gradle-plugin:1.7.0")
}