Как создать .jar (Создать исполняемый файл) встроенного сервера Ktor

Я очень новичок в Котлине, Кторе и Грейдле. Был создан встроенный сервер, как описано на сайте Ktor, со следующим кодом:

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" } } 

Сервер работает нормально: localhost:8080

и я вижу файлы ниже в папке:

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

Как я могу узнать, создать исполняемый файл .jar этого сервера, чтобы я мог распространять его на пользователя?

введите описание изображения здесь

Что вам нужно сделать, так это добавить следующий фрагмент кода для 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 .

Или запустите его с помощью javaw -jar <jar_name>.jar вместо java (вам может потребоваться убедиться, что он находится на пути, если JAVA_HOME не определен хорошо). Это запустит его без консоли.

PS Вы также можете использовать плагин application или shadowJar .