配置 build.gradle 为简单的 kotlin 项目创建可执行 jar 文件
Configuring build.gradle to create executable jar file for simple kotlin projects
我正在使用简单的文本编辑器在 Kotlin 中编写我的代码,例如:
fun main() {
var sc = Scanner(System.`in`)
var a = sc.nextInt()
var b = sc.nextInt()
print(a + b)
}
而且我已经尝试通过
在命令行中进行简单编译和 运行ning 代码
kotlinc hello.kt -include-runtime -d hello.jar
接着是
java -jar hello.jar
但我不知道为什么最近编译即使是最简单的代码也要超过 5 秒,所以我决定使用 Gradle 来编译和 运行ning 我的项目.编译和 运行 通常需要更少的时间,但是当我想输入一些值时,我不能将它用于 运行ning。我已经尝试寻找一些解决方案,但我能找到的最好的方法是向 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-stdlib
)包含在一个 JAR 文件中,以便它可以独立使用。 Gradle Shadow Plugin 用于此。只需将它添加到您的项目中,例如:
plugins {
id 'com.github.johnrengelman.shadow' version '5.2.0'
}
并且 shadowJar
会生成一个装有您需要的一切的大罐子。
我正在使用简单的文本编辑器在 Kotlin 中编写我的代码,例如:
fun main() {
var sc = Scanner(System.`in`)
var a = sc.nextInt()
var b = sc.nextInt()
print(a + b)
}
而且我已经尝试通过
在命令行中进行简单编译和 运行ning 代码kotlinc hello.kt -include-runtime -d hello.jar
接着是
java -jar hello.jar
但我不知道为什么最近编译即使是最简单的代码也要超过 5 秒,所以我决定使用 Gradle 来编译和 运行ning 我的项目.编译和 运行 通常需要更少的时间,但是当我想输入一些值时,我不能将它用于 运行ning。我已经尝试寻找一些解决方案,但我能找到的最好的方法是向 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-stdlib
)包含在一个 JAR 文件中,以便它可以独立使用。 Gradle Shadow Plugin 用于此。只需将它添加到您的项目中,例如:
plugins {
id 'com.github.johnrengelman.shadow' version '5.2.0'
}
并且 shadowJar
会生成一个装有您需要的一切的大罐子。