Kotlin에서 실행가능한 jar 생성하기
23 Dec 2019 | KotlinExecutable jar 생성하기
터미널에서 java -jar 명령어를 이용해서 간단하게 실행할 수 있는 jar 파일을 생성하는 예제입니다.
Main.kt
여기서는 com.snowdeer라는 패키지를 만들고 그 안에 Main.kt 파일을 생성했습니다.
package com.snowdeer
import java.lang.Thread.sleep
fun main(args: Array<String>) {
println("Hello SnowDeer.")
val t = Thread() {
while (true) {
println("Thread is Running ...")
sleep(2000)
}
}
t.start()
}
build.gradle
buildscript {
ext.kotlin_version = '1.3.61'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'java'
apply plugin: 'kotlin'
group 'com.snowdeer'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
testCompile group: 'junit', name: 'junit', version: '4.12'
}
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
jar {
manifest {
attributes 'Main-Class': 'com.snowdeer.MainKt'
}
archiveName 'helloKotlin.jar'
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}
위에서 dependencies 구문 안에 compile 키워드를 확인해야 합니다. 안드로이드 스튜디오에서 사용하던 gradle에서는
compile 명령어가 deprecated되어서 impelementation 키워드를 대신 사용하라고 되어 있지만, 사용하는 gradle 버전에
따라서는 compile만 사용해야 정상 동작되는 경우가 있습니다.
빌드 및 실행
이후 터미널에서 다음 명령어를 이용해서 빌드 및 실행을 해봅니다.
$ ./gradlew clean build
$ java -jar build/libs/helloKotlin.jar
application 플러그인 추가
만약 gradle 명령어를 이용해서 실행을 해보고 싶으면 다음과 같이 apply plugin: 'application'와 mainClassName = "com.snowdeer.MainKt"를
추가해줍니다.
buildscript {
ext.kotlin_version = '1.3.61'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'java'
apply plugin: 'kotlin'
apply plugin: 'application'
group 'com.snowdeer'
version '1.0-SNAPSHOT'
mainClassName = "com.snowdeer.MainKt"
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
testCompile group: 'junit', name: 'junit', version: '4.12'
}
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
jar {
manifest {
attributes 'Main-Class': 'com.snowdeer.MainKt'
}
archiveName 'helloKotlin.jar'
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}
그 이후 터미널에서
$ ./gradlew run
명령어를 이용해서 바로 실행도 가능합니다.
IntelliJ에서 설정하는 방법
intelliJ에서 IDE의 run 메뉴를 통해 실행하는 방법은 다음과 같습니다.
- 메뉴의
Run > Run을 누른다음Edit Configuration선택 - 왼쪽의
+버튼을 눌러서Gradle항목 선택 Gradle project항목 옆의 버튼을 눌러서 실행할 프로젝트 선택Arguments에run명령어 추가
또는 다음과 같이 할 수도 있습니다.
- 메뉴의
Run > Run을 누른다음Edit Configuration선택 - 왼쪽의
+버튼을 눌러서Application항목 선택 Main Class를 선택. 위 예제에서는com.snowdeer.MainKt선택use classpath of module에서 실행할 모듈 선택