如何在 Gradle 8.x 和 Kotlin DSL 中设置 Manifest 的属性

How to set Manifest's attributes in Gradle 8.x and Kotlin DSL

提问人:YaMiN 提问时间:4/17/2023 更新时间:10/24/2023 访问量:237

问:

最近,我在 Kotlin 中创建了一个项目,该项目将 Kotlin DSL 用于文件,并使用了 Gradle 7.4.2,但在升级到 8.0.2 后,我无法为 manifest 设置属性。我这样做是为了设置用于创建 jar 文件的主类。
我的一部分:
build.gradle.ktsbuild.gradle.kts

tasks.jar {
    manifest {
        attributes["Main-Class"] = "io.github.yamin8000.twitterscrapper.MainKt"
    }
    configurations["compileClasspath"].forEach { file: File ->
        from(zipTree(file.absoluteFile))
    }
    duplicatesStrategy = DuplicatesStrategy.INCLUDE
}

IDE 抱怨第 3 行。
那么,除了在 Gradle 8.x 中看起来不可用的数组访问之外,还有什么替代方案呢?
No set method providing array access

Kotlin kotlin-dsl

评论


答:

1赞 natronite 10/24/2023 #1

这是一个古老的问题,但也许这可以帮助某人。

manifest.attributes是 类型的对象。你应该做的是:Attributes

manifest {
    attributes("Main-Class" to "io.github.yamin8000.twitterscrapper.MainKt")
}