Как конвертировать Java-задачу Gradle Ant в Kotlin - PullRequest
1 голос
/ 06 марта 2019

У меня есть задача муравья, которая запускает базу данных H2.Сценарий сборки выглядит следующим образом:

apply plugin: 'java'

repositories {
    mavenCentral()
}

dependencies {
    runtime 'com.h2database:h2:1.3.168'
}

task startH2Db {
    group = 'database'
    description='Starts the H2 TCP database server on port 9092 and web admin on port 8082'
    doLast{
        ant.java( fork:true, spawn:true, classname:'org.h2.tools.Server', dir:projectDir){
            arg(value: "-tcp")
            arg(value: "-web")
            arg(value: "-tcpPort")
            arg(value: "9092")
            arg(value: "-webPort")
            arg(value: "8082")
            arg(value: "-webAllowOthers")
            classpath {
                pathelement(path:"${sourceSets.main.runtimeClasspath.asPath}")
            }
        }
    }
}

Учитывая, что Gradle теперь поддерживает Kotlin, я решил попробовать преобразовать этот build.gradle в build.gradle.kts файл.

I'mизо всех сил пытается найти документацию о том, как сделать это в Kotlin.Я нашел примеры других задач муравья, но ничего с аргументами, как указано выше.Я дошел до этого:

plugins {
    java
}

repositories {
    mavenCentral()
}

dependencies {
    runtime ("com.h2database:h2:1.3.168")
}

tasks {
    register("startH2Database") {
        group = "database"
        description = "Starts the H2 TCP database server on port 9092 and web admin on port 8082"
        doLast {
            ant.withGroovyBuilder {
            "java"("fork" to true, "spawn" to true, "classname" to "org.h2.tools.Server", "dir" to projectDir)
            }
        }
    }
}

Как мне настроить args и classpath?Есть ли дополнительная документация, кроме перечисленных здесь: https://docs.gradle.org/current/userguide/ant.html?

1 Ответ

2 голосов
/ 06 марта 2019

Вы можете проверить больше примеров в репозитории Gradle Kotlin DSL, например, https://github.com/gradle/kotlin-dsl/blob/master/samples/ant/build.gradle.kts

Так что ваш вызов Ant может выглядеть как

ant.withGroovyBuilder {
  "java"( 
     "fork" to true, 
     "spawn" to true, 
     "classname" to "org.h2.tools.Server", 
     "dir" to projectDir
   ){
      "arg"("value" to "-tcp")
      "arg"("value" to "-web")
      "arg"("value" to "-tcpPort")
      "arg"("value" to "9092")
      "arg"("value" to "-webPort")
      "arg"("value" to "8082")
      "arg"("value" to "-webAllowOthers")
      "classpath" {
        "pathelement"(
                "path" to configurations["runtime"].asPath
            )
      }
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...