Cómo crear el flask gordo con gradle kotlin script

Como titulado, me gustaría saber cómo modificar el gradle.build.kts para tener una tarea para crear un jar único con todas las dependencies (kollin lib incluido) dentro.

Encontré esta muestra en Groovy:

 //create a single Jar with all dependencies task fatJar(type: Jar) { manifest { attributes 'Implementation-Title': 'Gradle Jar File Example', 'Implementation-Version': version, 'Main-Class': 'com.mkyong.DateUtils' } baseName = project.name + '-all' from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } with jar } 

Pero no tengo idea de cómo podría escribir eso en kotlin, aparte de:

 task("fatJar") { } 

Aquí hay una versión que no usa un complemento, más parecido a la versión de Groovy.

 import org.gradle.jvm.tasks.Jar val fatJar = task("fatJar", type = Jar::class) { baseName = "${project.name}-fat" manifest { attributes["Implementation-Title"] = "Gradle Jar File Example" attributes["Implementation-Version"] = version attributes["Main-Class"] = "com.mkyong.DateUtils" } from(configurations.runtime.map({ if (it.isDirectory) it else zipTree(it) })) with(tasks["jar"] as CopySpec) } tasks { "build" { dependsOn(fatJar) } } 

También se explica aquí

Puede usar el complemento ShadowJar para build un contenedor de grasa:

 import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar buildscript { repositories { mavenCentral() gradleScriptKotlin() } dependencies { classpath(kotlinModule("gradle-plugin")) classpath("com.github.jengelman.gradle.plugins:shadow:1.2.3") } } apply { plugin("kotlin") plugin("com.github.johnrengelman.shadow") } repositories { mavenCentral() } val shadowJar: ShadowJar by tasks shadowJar.apply { manifest.attributes.apply { put("Implementation-Title", "Gradle Jar File Example") put("Implementation-Version" version) put("Main-Class", "com.mkyong.DateUtils") } baseName = project.name + "-all" } 

Simplemente ejecute la tarea con 'shadowJar'.

NOTA: Esto supone que está utilizando GSK 0.7.0 (a partir del 13/02/2017).

  • no se pudo crear una instancia de extensión de complemento gradle
  • Cómo convertir Int a Hex String en Kotlin?
  • ¿Cómo puedo ejecutar una sola testing de Android usando Kotlin?
  • ¿Cuál es la diferencia entre dos conversiones de Long a ByteArray?
  • Solicitud en Android siempre dando exception de time de espera del socket
  • super.onCreateAnimation siempre devuelve null
  • el map de kotlin agrega valor si no es igual
  • ImageButton OnClickListener no funciona
  • Mi proyecto Kotlin No se pueden resolver dependencies en Travis-CI
  • Enlazar list de objects usando Guice + Kotlin
  • Delegación de Android Kotlin Mvp Class