especifique la class Kotlin como el punto de input de la class principal en MANIFEST.MF?

¿Cómo le digo explícitamente a shadowJar que use un file Kotlin como punto de input para el uberJar resultante? (O, grasa JAR como prefieras)

torpemente editando META-INF/MANIFEST.MF y reemplazándolo en el file zip (usé la GUI para regresarlo):

 thufir@dur:~/NetBeansProjects/kotlin/build/libs$ thufir@dur:~/NetBeansProjects/kotlin/build/libs$ ll total 900 drwxrwxr-x 2 thufir thufir 4096 Nov 5 03:42 ./ drwxrwxr-x 8 thufir thufir 4096 Nov 5 03:42 ../ -rw-rw-r-- 1 thufir thufir 903184 Nov 5 03:42 kotlinAdder.jar thufir@dur:~/NetBeansProjects/kotlin/build/libs$ thufir@dur:~/NetBeansProjects/kotlin/build/libs$ jar xf kotlinAdder.jar thufir@dur:~/NetBeansProjects/kotlin/build/libs$ thufir@dur:~/NetBeansProjects/kotlin/build/libs$ ll total 928 drwxrwxr-x 7 thufir thufir 4096 Nov 5 03:42 ./ drwxrwxr-x 8 thufir thufir 4096 Nov 5 03:42 ../ drwxrwxr-x 2 thufir thufir 4096 Nov 5 03:42 demo/ drwxrwxr-x 17 thufir thufir 12288 Nov 5 03:42 kotlin/ -rw-rw-r-- 1 thufir thufir 903184 Nov 5 03:42 kotlinAdder.jar drwxrwxr-x 3 thufir thufir 4096 Nov 5 03:42 META-INF/ drwxrwxr-x 3 thufir thufir 4096 Nov 5 03:42 net/ drwxrwxr-x 4 thufir thufir 4096 Nov 5 03:42 org/ thufir@dur:~/NetBeansProjects/kotlin/build/libs$ thufir@dur:~/NetBeansProjects/kotlin/build/libs$ nano META-INF/MANIFEST.MF thufir@dur:~/NetBeansProjects/kotlin/build/libs$ thufir@dur:~/NetBeansProjects/kotlin/build/libs$ cat META-INF/MANIFEST.MF Manifest-Version: 1.0 Main-Class: net.bounceme.dur.kotlin.App thufir@dur:~/NetBeansProjects/kotlin/build/libs$ thufir@dur:~/NetBeansProjects/kotlin/build/libs$ nano META-INF/MANIFEST.MF thufir@dur:~/NetBeansProjects/kotlin/build/libs$ thufir@dur:~/NetBeansProjects/kotlin/build/libs$ cat META-INF/MANIFEST.MF Manifest-Version: 1.0 Main-Class: demo.MainKt thufir@dur:~/NetBeansProjects/kotlin/build/libs$ thufir@dur:~/NetBeansProjects/kotlin/build/libs$ java -jar kotlinAdder.jar Hello, world! thufir@dur:~/NetBeansProjects/kotlin/build/libs$ 

Éxito de tipo. Ejecutó la class Kotlin como estaba previsto.

proyecto:

 . ├── build.gradle ├── gradle │  └── wrapper │  ├── gradle-wrapper.jar │  └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── src ├── main │  ├── java │  │  └── net │  │  └── bounceme │  │  └── dur │  │  └── kotlin │  │  └── App.java │  └── kotlin │  └── demo │  ├── example.kt │  └── main.kt └── test └── java 13 directories, 9 files 

file de compilation:

 plugins { id 'com.gradle.build-scan' version '1.8' // id 'java' id 'application' id "org.jetbrains.kotlin.jvm" version "1.1.51" id 'com.github.johnrengelman.shadow' version '2.0.1' } buildScan { licenseAgreementUrl = 'https://gradle.com/terms-of-service' licenseAgree = 'yes' //publishAlways() } configurations { provided } shadowJar { baseName = 'kotlinAdder' classifier = null version = null } sourceCompatibility = 1.8 targetCompatibility = 1.8 //mainClassName = 'net.bounceme.dur.kotlin.App' mainClassName = 'demo.MainKt' repositories { jcenter() } configurations { provided } dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib:1.1.51" compile 'com.google.firebase:firebase-auth:11.4.2' } 

¿Cómo le digo a Gradle que siga usando shadowJar pero que construya MANIFEST.MF como editado manualmente, para establecer Main-Class: demo.MainKt explícitamente como el punto de input.

De lo contrario, el código de Java se ejecuta de forma pnetworkingeterminada incluso cuando he establecido explícitamente el punto de input como se build.gradle arriba en el file build.gradle .