在我的buildsrc文件夹中的自定义任务中:如何确定该子标记的文件路径



如果我在buildsrc中定义了自定义gradle任务:如何找出任务称为该项目的相对路径?

在我的buildsrc文件夹中,我有一个自定义任务,可以创建我们的消息的枚举。

open class GenerateEnumTask : DefaultTask() {
    @get:Input
    open var inputFolder: String = "src/main/resources"
    @get:Input
    open val targetFilePath: String = "src/generated/kotlin/MessageCode.kt"
    @get:OutputFile
    val enumFile = File(targetFilePath)
    @TaskAction
    fun generateEnum() {
     ...
    }
    @Internal
    override fun getDescription() = "This task uses downloaded property files and creates an enum kotlin file"
}

我要确保在代码编译之前生成枚举。因此,我将其放在subproject的"核心"中,我需要枚举。

build.gradle.kts:

tasks {
    val generateEnumTask by registering(GenerateEnumTask::class)
    withType<KotlinCompile> {
        kotlinOptions.jvmTarget = Versions.jvmTarget
        dependsOn(generateEnumTask)
        dependsOn(formatKotlin)
        doFirst{
            println("compile kotlin in core project")
        }
    }

}

如果我直接从核心项目的子文件夹中运行gradle compileKotlin,这确实可以工作。但是,如果我从 root 项目中运行相同的命令,则代码将在根目录中搜索SRC文件夹。

ah,答案很简单:DefaultTask从AbstractTask继承,该tastion tracktask the atrackt taster the the the Task in(GetProject)

这很好:

open var targetFolder: String = this.project.file("src/main/resources").absolutePath

相关内容

  • 没有找到相关文章

最新更新