首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Kotlin dsl级,如何使用自定义任务在.kt中调用和执行函数

Kotlin dsl级,如何使用自定义任务在.kt中调用和执行函数
EN

Stack Overflow用户
提问于 2020-02-08 05:43:25
回答 1查看 2K关注 0票数 1

我有和申请有

代码语言:javascript
运行
复制
fun main() {} 

内部测试/kotlin/com.Company/LocalApplication.kt

我使用它在localhost中运行,例如,使用IntelliJ,我只需单击run函数就可以启动我的应用程序。

里面的函数是什么,测试它为localhost生成一个自定义的args配置,然后调用真正的main/com.company/Application.kt

因此,我想在build.gradle.kts中为kotlin创建一个任务,当我在那个有趣的main()上手动单击运行时,这个任务和Intellij完全一样。

例如,在终端中这样做:

代码语言:javascript
运行
复制
gradle localhost

并且该命令调用fun () {} inside /kotlin/com.Company/LocalApplication.kt,并使用localhost配置启动我的应用程序。

谢谢你们

EN

回答 1

Stack Overflow用户

发布于 2020-02-08 17:51:20

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

代码语言:javascript
运行
复制
package com.company

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

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

您可以使用JavaExec任务类型。

定义JavaExec类型的自定义任务

代码语言:javascript
运行
复制
tasks.register<JavaExec>("localhost") {
    classpath = sourceSets.test.get().runtimeClasspath
    main = "com.company.LocalApplication"
}

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

代码语言:javascript
运行
复制
@file:JvmName("LocalApplication")
package com.company

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

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

代码语言:javascript
运行
复制
$ ./gradlew localhost

> Task :localhost
Hello world.

BUILD SUCCESSFUL in 4s
3 actionable tasks: 3 executed

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

经以下测试:

代码语言:javascript
运行
复制
------------------------------------------------------------
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60124269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档