5

我有一个非常基本的自定义构建(Minecraft 资源包压缩和复制)

目录布局

Project
- src (future Java/Kotlin sources for resource pack preprocessing)
- build (future Java/Kotlin class output folder, kept seperate from produced assets)
- rp (the 'src' folder for the resource pack assets, pre-processing.
  - assets
- rp-out (the 'build' folder for the resource pack assets, post-processing.
  - ResourcePack.zip
  - ResourcePack
    - variousAssetsToZip

和以下 build.gradle.kts

plugins {
    id("base")
}

tasks.create<Copy>("copy") {
    description = "Basic copy"
    group = "custom"
    from("rp")
    into("rp-out/${project.name}")
}

tasks.create<Zip>("zip") {
    description = "Archives the resource pack output"
    group = "Archive"
    from("rp-out/${project.name}")
    destinationDir = file("rp-out")
}

tasks.create<Delete>("cleanRP") {
    group = "build"
    delete {
        file("rp-out")
        file("rp-zip")
    }
}

我希望这会清理/删除文件夹 rp-out、rp-zip 本身或内容。

但我无法让 cleanRP 任务删除文件夹内容,它只是完成了任务,没有任何看似效果。

我对 Java 项目的 gradle有点熟悉,这是我做的第一个 Kotlin 脚本,但我一直适度关注会议演讲。

我怎样才能有效地调试呢?鉴于 gradle kotlin-dsl 的早期阶段,我应该如何自学?

(还有什么办法可以解决这个问题?)

4

2 回答 2

4

delete 是任务的属性,并使用“setter notation”进行设置。

它接受一个 Set,因此使用 kotlin setOf 语法,您可以定义一组 Gradle 支持的“类似文件”类型。

例子:

tasks.create<Delete>("cleanRP") {
    group = "rp"
    delete = setOf (
        "rp-out", "rp-zip"
    )
}
于 2018-08-22T12:25:21.000 回答
0

您应该改用 delete() 配置方法,以便可以正确链接任务。

tasks.create<Delete>("cleanRP") {
    group = "rp"
    delete(
        fileTree("rp-out"), 
        fileTree("rp-zip")
    )
}
于 2022-01-07T16:05:40.593 回答