使用gradle kotlin dsl执行JavaExec任务

时间:2018-08-12 15:30:10

标签: gradle kotlin gradle-kotlin-dsl

我已经创建了简单的build.gradle.kts文件

group  = "com.lapots.breed"
version = "1.0-SNAPSHOT"

plugins { java }

java { sourceCompatibility = JavaVersion.VERSION_1_8 }

repositories { mavenCentral() }

dependencies {}

task<JavaExec>("execute") {
    main = "com.lapots.breed.Application"
    classpath = java.sourceSets["main"].runtimeClasspath
}

src/main/java/com.lapots.breed中,我用主方法创建了Application

package com.lapots.breed;

public class Application {
    public static void main(String[] args) {
        System.out.println("Hello, world!");
    }
}

但是,当我尝试执行execute任务时,它会失败,并显示错误的提示:该任务不存在。同样,当我使用gradlew tasks列出所有可用任务时,它根本不显示execute任务。

出什么问题了?

1 个答案:

答案 0 :(得分:3)

以下构建脚本应该可以使用(等级4.10.2,Kotlin DSL 1.0-rc-6):

group = "com.lapots.breed"
version = "1.0-SNAPSHOT"

plugins {
    java
}

java {
    sourceCompatibility = JavaVersion.VERSION_1_8
}

repositories {
    mavenCentral()
}

task("execute", JavaExec::class) {
    main = "com.lapots.breed.Application"
    classpath = sourceSets["main"].runtimeClasspath
}

根据未列出的任务-从某些版本开始,Gradle不会显示未分配AbstractTask.group的自定义任务。您可以通过gradle tasks --all列出它们,也可以在给定的任务上设置group属性,例如:

task("execute", JavaExec::class) {
    group = "myCustomTasks"
    main = "com.lapots.breed.Application"
    classpath = sourceSets["main"].runtimeClasspath
}