gpt4 book ai didi

java - Kotlin dsl gradle,如何使用自定义任务调用和执行 .kt 内的函数

转载 作者:行者123 更新时间:2023-12-01 18:33:09 29 4
gpt4 key购买 nike

我有一个应用程序

fun main() {} 

内部 test/kotlin/com.company/LocalApplication.kt

我使用它在本地主机中运行,例如使用 IntelliJ,我只需单击运行该函数即可启动我的应用程序。

该函数在测试中做什么,为本地主机生成自定义参数配置,然后调用真正的 main/com.company/Application.kt

所以我想在 build.gradle.kts 中为 kotlin dsl gradle 创建一个任务,它的作用与当我手动单击那个有趣的 main() 上的运行时 Intellij 所做的完全相同

例如在终端中执行以下操作:

gradle localhost

该命令调用 test/kotlin/com.company/LocalApplication.kt 中的 fun main() {} 并使用 localhost 配置启动我的应用程序。

谢谢大家

最佳答案

让我们假设这个非常基本的应用程序App.kt:

package com.company

class App {
val greeting: String
get() {
return "Hello world."
}
}

fun main(args: Array<String>) {
println(App().greeting)
}

您可以使用JavaExec任务类型。

定义 JavaExec 类型的自定义任务:

tasks.register<JavaExec>("localhost") {
classpath = sourceSets.test.get().runtimeClasspath
main = "com.company.LocalApplication"
}

然后,您需要更新 LocalApplication.kt 以使用 @file:JvmName:

@file:JvmName("LocalApplication")
package com.company

fun main(args: Array<String>) {
println(App().greeting)
}

然后在我的终端中运行任务会产生:

$ ./gradlew localhost

> Task :localhost
Hello world.

BUILD SUCCESSFUL in 4s
3 actionable tasks: 3 executed

JavaExec 任务还有更多选项,请阅读文档以获取更多信息。

测试使用:

------------------------------------------------------------
Gradle 6.1.1
------------------------------------------------------------

Build time: 2020-01-24 22:30:24 UTC
Revision: a8c3750babb99d1894378073499d6716a1a1fa5d

Kotlin: 1.3.61
Groovy: 2.5.8
Ant: Apache Ant(TM) version 1.10.7 compiled on September 1 2019
JVM: 11.0.6 (AdoptOpenJDK 11.0.6+10)
OS: Mac OS X 10.15.3 x86_64

关于java - Kotlin dsl gradle,如何使用自定义任务调用和执行 .kt 内的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60124269/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com