配置build.gradle为简单的kotlin项目创建可执行的jar文件。

问题描述 投票:0回答:1

我使用简单的文本编辑器在Kotlin中写我的代码,比如这样。

fun main() {
    var sc = Scanner(System.`in`)
    var a = sc.nextInt()
    var b = sc.nextInt()

    print(a + b) 
}

我还试过简单的编译和在命令行中运行代码,方法是:

kotlinc hello.kt -include-runtime -d hello.jar

其次

java -jar hello.jar

但是不知道为什么最近编译最简单的代码的时间都要超过5秒,所以我决定用Gradle来编译和运行我的项目。通常情况下,编译和运行的时间比较短,但是当我想输入一些值的时候,就不能用它来运行了。我试着寻找一些解决方案,但我能找到的最好的办法是给Gradle一些信号,让它知道你想在编译过程中输入一些值,但这意味着每次都要为不同的代码改变编译。所以我想知道我是否可以配置我的 build.gradle 这样它就可以给我一个jar的可执行文件,让我可以运行。

这是我的build.gradle文件。

buildscript {
    repositories {
        mavenCentral()
        gradlePluginPortal()
       maven { url "https://dl.bintray.com/kotlin/kotlin-eap" }
    }

    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4-M1"
    }
}

plugins {
    id 'application'
}

apply plugin: "kotlin"

repositories {
    maven { url "https://dl.bintray.com/kotlin/kotlin-eap" }
    mavenCentral()
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib"
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
}

group 'sangeet'
version '1.0'


mainClassName = 'MainKt'

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

sourceSets {
  main.java.srcDirs += './'
}

defaultTasks 'run'

run {
  if (project.hasProperty('main')) {
    main(project.main.replace(".kt", "Kt").capitalize())
  }
}
kotlin gradle build compilation executable-jar
1个回答
0
投票

你需要将你的项目的所有依赖关系(例如. kotlin-stdlib)在一个JAR文件中,所以它可以独立使用。Gradle Shadow Plugin 是用来做这个的。只要把它添加到你的项目中,如。

plugins {
  id 'com.github.johnrengelman.shadow' version '5.2.0'
}

shadowJar 会产生一个胖罐子,里面有你需要的一切。

© www.soinside.com 2019 - 2024. All rights reserved.