如何让gradle 5预编译脚本插件在包中运行时才能工作

问题描述 投票:2回答:1

我想通过使用gradle 5.3.1引入的build.gradle.kts功能模块化我的precompiled script plugins文件。

当我在hello-world.gradle.kts中直接使用我的简单buildSrc/src/main/kotlin文件时,它工作正常

tasks.register("hello-world") { println("hello world") }

并将其包含在我的主要build.gradle.kts的插件部分中:

plugins {
   `hello-world`
}

我现在可以使用gradle hello-world并查看预期的输出。

但是当我将相同的脚本放在buildSrc/src/main/kotlin/custom/hello-world-custom.gradle.kts中时(将package custom添加到脚本中)它失败了,尽管文档指出:

同样,src / main / kotlin / my / java-library-convention.gradle.kts会产生my.java-library-convention的插件ID,只要它具有my的包声明。

主要build.gradle.kts

plugins {
   `custom.hello-world-custom`
}

但相反,我得到一个错误:

 Script compilation error:

  Line 3:   `custom.hello-world-custom`
        ^ Unresolved reference: `custom.hello-world-custom`

任何想法如何解决这一问题?

更新:为了重现这一点,我创建了一个具有不同“hello world”任务的small repo

gradle
1个回答
2
投票

从文档中不太清楚,但我找到了解决方案:

包必须在反引号之外定义:

plugins {
 `hello-world`
 custom.`hello-world-custom`
}
© www.soinside.com 2019 - 2024. All rights reserved.