为什么在 buildSrc 目录下的自定义 gradle.kts 文件中找不到 'publishing' 函数?
Why is 'publishing' function not being found in my custom gradle.kts file within buildSrc directory?
我有一个正在构建的自定义 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
文件中执行 运行 任务和诸如此类的东西,但是尝试使用 gradle 文档中的 publishing
功能被证明是不可能的。有任何想法吗?我正在使用 gradle 版本 4.10.3(我需要 Android 支持)。 maven-deploy.gradle.kts
文件在 buildSrc/src/main/kotlin
中,并且由 id("maven-deploy")
添加到我的主项目的 build.gradle.kts
文件中。
发生这种情况是因为 Gradle 仅将为 Gradle Kotlin DSL 生成的类型安全访问器导入到主构建脚本中,而不是导入到 脚本插件中 :
Only the main project build scripts have type-safe model accessors. Initialization scripts, settings scripts, script plugins (precompiled or otherwise) do not. These limitations will be removed in a future Gradle release.
见Understanding when type-safe model accessors are available
在您提到的脚本中,您可以动态访问发布扩展,例如,使用 configure<PublishingExtension> { ... }
:
import org.gradle.api.publish.PublishingExtension
plugins {
`maven-publish`
signing
}
configure<PublishingExtension> {
// ...
}
此处描述:Project extensions and conventions
更新:Gradle 5.3 RC1 似乎增加了在脚本插件中使用生成的扩展的可能性。
我有一个正在构建的自定义 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
文件中执行 运行 任务和诸如此类的东西,但是尝试使用 gradle 文档中的 publishing
功能被证明是不可能的。有任何想法吗?我正在使用 gradle 版本 4.10.3(我需要 Android 支持)。 maven-deploy.gradle.kts
文件在 buildSrc/src/main/kotlin
中,并且由 id("maven-deploy")
添加到我的主项目的 build.gradle.kts
文件中。
发生这种情况是因为 Gradle 仅将为 Gradle Kotlin DSL 生成的类型安全访问器导入到主构建脚本中,而不是导入到 脚本插件中 :
Only the main project build scripts have type-safe model accessors. Initialization scripts, settings scripts, script plugins (precompiled or otherwise) do not. These limitations will be removed in a future Gradle release.
见Understanding when type-safe model accessors are available
在您提到的脚本中,您可以动态访问发布扩展,例如,使用 configure<PublishingExtension> { ... }
:
import org.gradle.api.publish.PublishingExtension
plugins {
`maven-publish`
signing
}
configure<PublishingExtension> {
// ...
}
此处描述:Project extensions and conventions
更新:Gradle 5.3 RC1 似乎增加了在脚本插件中使用生成的扩展的可能性。