我有一个自定义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类型安全访问器导入主构建脚本,而不是导入脚本插件:
只有主项目构建脚本具有类型安全的模型访问器。初始化脚本,设置脚本,脚本插件(预编译或其他)不会。将来的Gradle版本中将删除这些限制。
见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
UPD:Gradle 5.3 RC1似乎增加了在脚本插件中使用生成的扩展的可能性。