2017-09-22 23 views
3

私はKotlinとKtorとGradleにとって非常に新しいです。Ktor組み込みサーバーの.jar(Create Executable)を作成するには

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

と私は以下のファイルを見ることができますoutフォルダ内:

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

どのように私は、このサーバーの実行可能ファイルの.jarを作成知ることができるので、私はそれをユーザに配布することができますか?あなたがする必要がどのような

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.S. applicationプラグインまたはshadowJarを使用することもできます。

+0

IJターミナルから実行すると、 'gradle'が内部または外部コマンドとして認識されません。 操作可能なプログラムまたはバッチファイルです。 –

+0

私はcmdから実行すると、私はこれを得た:*何がうまくいかなかった: タスク 'クリーン'ルートプロジェクト 'ブログ'に見つかりません。 –

+0

@ HasanAYousef、正しい場所から実行し、javaとkotlinプラグインを適用してもよろしいですか? – Opal

関連する問題