Gradle Shadow plugin
The Gradle Shadow plugin allows you to create an executable JAR that includes all code dependencies (fat JAR). In this topic, we'll show you how to generate and run a fat JAR for a Ktor application created in the Adding Ktor to an existing Gradle project topic.
Prerequisites
Before starting this tutorial, clone the ktor-gradle-sample repository.
Configure the Shadow plugin
To build a Fat JAR, you need to configure the Shadow plugin first:
Open the
build.gradle(.kts)file and add the plugin to thepluginsblock:plugins { id 'com.github.johnrengelman.shadow' version '7.0.0' }plugins { id("com.github.johnrengelman.shadow") version "7.0.0" }Add the
shadowJartask:shadowJar { manifest { attributes 'Main-Class': 'com.example.ApplicationKt' } }tasks{ shadowJar { manifest { attributes(Pair("Main-Class", "com.example.ApplicationKt")) } } }If you use EngineMain without the explicit
mainfunction, yourMain-Classdepends on the used engine and might look as follows:io.ktor.server.netty.EngineMain.
Build a Fat JAR
To build a Fat JAR, open the terminal and execute the shadowJar task created in the previous step:
When this build completes, you should see the ktor-gradle-sample-1.0-SNAPSHOT-all.jar file in the build/libs directory.
Run the application
To run the built application:
Go to the
build/libsfolder in a terminal.Execute the following command to run the application:
java -jar ktor-gradle-sample-1.0-SNAPSHOT-all.jarWait until the following message is shown:
[main] INFO Application - Responding at http://0.0.0.0:8080You can click the link to open the application in a default browser: