Kotlin dsl gradle, как вызывать и выполнять функцию внутри .kt с пользовательской задачей - PullRequest
0 голосов
/ 08 февраля 2020

У меня есть и приложение, которое имеет

fun main() {} 

внутри test / kotlin / com.company / LocalApplication.kt

Я использую это для запуска в localhost, например, с IntelliJ Я просто делаю щелкните по запуску этой функции, чтобы запустить мое приложение.

Что внутри этой функции проверяется, генерируется ли пользовательская конфигурация args для localhost, и после этого вызывается настоящий main / com.company / Application.kt

так что я хочу создать задачу для kotlin dsl gradle в build.gradle.kts, которая делает то же самое, что и Intellij, когда я нажимаю вручную на запуск этой забавной main ()

, например, в терминал делает это:

gradle localhost

и эта команда вызывает fun main () {} внутри test / kotlin / com.company / LocalApplication.kt и запускает мое приложение с конфигурацией localhost.

спасибо, ребята

1 Ответ

0 голосов
/ 08 февраля 2020

Предположим, это самое основное c приложение 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
...