2017-09-22 31 views
3

저는 Kotlin 및 Ktor and Gradle을 매우 신 낯설습니다.Ktor 임베디드 서버의 .jar (실행 파일 작성) 작성 방법

BlogApp.kt :

package blog 

import org.jetbrains.ktor.netty.* 
import org.jetbrains.ktor.routing.* 
import org.jetbrains.ktor.application.* 
import org.jetbrains.ktor.features.* 
import org.jetbrains.ktor.host.* 
import org.jetbrains.ktor.http.* 
import org.jetbrains.ktor.response.* 

fun Application.module() { 
    install(DefaultHeaders) 
    install(CallLogging) 
    install(Routing) { 
     get("/") { 
      call.respondText("My Example Blog sfs 122", ContentType.Text.Html) 
     } 
    } 
} 

fun main(args: Array<String>) { 
    embeddedServer(Netty, 8080, watchPaths = listOf("BlogAppKt"), module = Application::module).start() 
} 

build.gradle :

group 'Example' 
version '1.0-SNAPSHOT' 

buildscript { 
    ext.kotlin_version = '1.1.4-3' 

    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 
    } 
} 

apply plugin: 'java' 
apply plugin: 'kotlin' 

sourceCompatibility = 1.8 
ext.ktor_version = '0.4.0' 

repositories { 
    mavenCentral() 
    maven { url "http://dl.bintray.com/kotlin/ktor" } 
    maven { url "https://dl.bintray.com/kotlin/kotlinx" } 
} 

dependencies { 
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version" 
    compile "org.jetbrains.ktor:ktor-core:$ktor_version" 
    compile "org.jetbrains.ktor:ktor-netty:$ktor_version" 
    compile "ch.qos.logback:logback-classic:1.2.1" 
    testCompile group: 'junit', name: 'junit', version: '4.12' 
} 

compileKotlin { 
    kotlinOptions.jvmTarget = "1.8" 
} 
compileTestKotlin { 
    kotlinOptions.jvmTarget = "1.8" 
} 
kotlin { 
    experimental { 
     coroutines "enable" 
    } 
} 

서버 다음 코드로, Ktor 사이트에 설명 된대로 임베디드 서버를 만들 수 있었다 다음에서 잘 실행하십시오. localhost:8080

그리고 아래 파일을 볼 수 있습니다.

C:\Users\Home\IdeaProjects\Example\out\production\classes\blog

가 어떻게이 서버의 실행 파일의 .jar을 만들 알 수 있습니다, 그래서 사용자에게 배포 할 수 있습니다 다음 out 폴더에? 당신이해야 할 일은

enter image description here

답변

4

build.gradle 파일에 다음 코드 조각을 추가하는 것입니다

jar { 
    baseName '<jar_name>' 
    manifest { 
     attributes 'Main-Class': 'blog.BlogAppKt' 
    } 

    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } 
} 

그런 다음 실행 gradle clean jar. 완료되면 build/libs으로 이동하고 java -jar <jar_name>.jar을 실행합니다.

또는 Java 대신 javaw -jar <jar_name>.jar을 사용하여 실행하십시오 (JAVA_HOME이 잘 정의되지 않은 경우 경로에 해당 경로를 지정해야 할 수도 있음). 그러면 콘솔없이 실행됩니다.

P. application 플러그인 또는 shadowJar 플러그인을 사용할 수도 있습니다.

+0

IJ 터미널에서 실행할 때 'gradle'이 내부 또는 외부 명령 인 실행 가능 프로그램이나 배치 파일로 인식되지 않습니다. –

+0

cmd에서 실행할 때, 다음과 같이 나타납니다. * 무엇이 잘못 되었습니까 : 루트 프로젝트 '블로그'에서 '깨끗한'작업을 찾을 수 없습니다. –

+0

@HasanAYousef, 올바른 위치에서 실행하고 java 및 kotlin 플러그인을 적용 했습니까? – Opal