Groovy转Kotlin DSL:Nebula插件Rpm任务创建报错求助
解决Kotlin DSL中Nebula RPM任务创建的"Unresolved reference: Rpm"错误
出现这个错误的核心原因是Kotlin DSL需要显式导入插件提供的类,不像Groovy会自动导入相关类型。以下是具体的解决步骤:
1. 修正插件配置(推荐方式)
将apply(plugin = "nebula.rpm")替换为plugins块声明,更符合Kotlin DSL的规范,同时确保插件版本一致:
plugins { id("nebula.ospackage") version "8.3.0" id("nebula.rpm") version "8.3.0" }
2. 正确创建Rpm任务
有两种可行的方式:
方式一:显式导入Rpm类
在build.gradle.kts顶部导入Nebula的Rpm类,然后直接引用创建任务:
import com.netflix.gradle.plugins.rpm.Rpm val buildRpm by tasks.creating(Rpm::class) { // 这里添加Rpm任务的具体配置,示例: packageName = "your-app" version = "2.1.0" release = "1" arch = "x86_64" println("building") }
方式二:使用全限定类名(无需导入)
如果不想添加导入语句,可以直接使用Rpm类的全限定名称:
val buildRpm by tasks.creating(com.netflix.gradle.plugins.rpm.Rpm::class) { println("building") // 任务配置... }
推荐:使用Gradle延迟任务注册
Gradle官方推荐用tasks.register实现延迟任务创建,性能更优:
import com.netflix.gradle.plugins.rpm.Rpm tasks.register<Rpm>("buildRpm") { println("building") // 任务配置... }
完成以上配置后,重新运行./gradlew buildRpm即可正常执行任务。
内容的提问来源于stack exchange,提问作者JPV
相关产品推荐
相关产品推荐

