plugins {
kotlin("jvm") version "1.9.10" // Adjust the version to match your Kotlin version
id("application")
}
repositories {
mavenCentral()
}
dependencies {
implementation("com.github.ajalt.clikt:clikt:5.0.1")
// optional support for rendering markdown in help messages
implementation("com.github.ajalt.clikt:clikt-markdown:5.0.1")
}
application {
mainClass.set("com.example.MainKt") // Set this to your main class path
}
tasks.jar {
manifest {
attributes["Main-Class"] = "com.example.MainKt" // Adjust to match your main class
}
from(sourceSets.main.get().output)
// Include runtime dependencies
dependsOn(configurations.runtimeClasspath)
from({
configurations.runtimeClasspath.get().filter { it.name.endsWith("jar") }.map { zipTree(it) }
})
}export with shadow jar
// put in plugins
id("com.github.johnrengelman.shadow") version "8.1.1"
tasks.named<Jar>("shadowJar") {
group = "build"
description = "build with shadowJAR"
archiveClassifier.set("shadow")
manifest {
attributes("Main-Class" to "MainKt") // نام کلاس اصلی
}
}export with custom tasks
tasks.register<Jar>("fatJarCustom") {
group = "build"
description = "Assembles a fat JAR that includes all dependencies."
// rez: add suffix on file
archiveClassifier.set("fat")
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
manifest {
attributes(
"Main-Class" to "MainKt" // مسیر کامل کلاس اصلی شما
)
}
from(sourceSets.main.get().output)
// اضافه کردن دپندنسیها
dependsOn(configurations.runtimeClasspath)
from({
configurations.runtimeClasspath.get().filter { it.name.endsWith("jar") }.map { zipTree(it) }
})
}package com.example
import com.github.ajalt.clikt.core.CliktCommand
class MyApp : CliktCommand() {
override fun run() {
println("Hello, Clikt!")
}
}
fun main(args: Array<String>) = MyApp().main(args)if we don’t want use “CLIKT” https://kotlinlang.org/docs/jvm-get-started.html#run-the-application
fun main() {
println("What's your name?")
val name = readln()
println("Hello, $name!")
// ...
}