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).

  • Kotlin en xml onClick no funciona
  • Kotlin y Gradle - Lectura desde stdio
  • Animar (desplazar) un ViewGroup bloquea vistas no relacionadas desde la animation hasta que finaliza
  • ReactiveStreams NPE cuando se utiliza publishOn con Publisher personalizado
  • kotlin android - Xposed IllegalArgumentException 'android.content.res.CoollifeUITpedArray'
  • ¿Cómo llamar al método Kotlin con más de una firma similar con lambda?
  • Android Koltin pasa los valores del girador a la list mutable
  • ¿Para qué sirve emptyArray () en Kotlin?
  • Inyectar una instancia falla con Kotlin & Guice
  • ¿Es posible reutilizar un layout en Kotlin Anko?
  • ¿Cómo puedo inicializar la variable antes de cada testing usando el marco kotlin-test