2017-01-22 9 views
8

शीर्षक के रूप में, मैं जानना चाहता हूं कि gradle.build.kts को एक अद्वितीय jar बनाने के लिए सभी निर्भरताओं (कोटलिन lib शामिल) के साथ एक कार्य करने के लिए कैसे कार्य करना है।ग्रेडल कोटलिन स्क्रिप्ट के साथ वसा जार कैसे बनाएं

task("fatJar") { 

} 

उत्तर

4

आप ShadowJar plugin इस्तेमाल कर सकते हैं एक वसा का निर्माण करने के: से

//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 
} 

अन्य लेकिन मैं कोई अंदाज़ा नहीं है मुझे लगता है कि कैसे लिख सकता है kotlin में,:

मैं ग्रूवी में इस नमूने में पाया गया जार:

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" 
} 

बस 'छाया जार' के साथ कार्य को चलाएं।

नोट: यह मानता है कि आप GSK 0.7.0 (02/13/2017 के रूप में नवीनतम) का उपयोग कर रहे हैं।

+0

काम नहीं कर, आयात com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar' पहली पंक्ति में '' ShadowJar' समाधान नहीं हुआ है .. – elect

+0

आप मेरा उत्तर की कोशिश की है जबसे? मैंने इसका परीक्षण किया है और काम कर रहा है। मुझे लगता है कि मूल समस्या यह थी कि() को एक विस्तार वर्ग की आवश्यकता थी। – mbStavola

+0

मैंने इसे फिर से करने की कोशिश की [http://imgur.com/qUozPd2), 'कार्यों' पर यह कहता है कि '{DELEGATE_SPECIAL_FUNCTION_MISSING] गुम हो गया है' GetValue (Build_gradle, KProperty <*>) 'प्रकार के प्रतिनिधि' विधि पर कार्य विधि! ' – elect

6

यहां एक ऐसा संस्करण है जो प्लगइन का उपयोग नहीं करता है, ग्रोवी संस्करण की तरह।

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

Also explained here

+3

यह वास्तव में – s1m0nw1

+1

काम करता है वह मजाक नहीं कर रहा है। इसे कहीं भी https://github.com/gradle/kotlin-dsl/tree/master/samples में जोड़ा जाना चाहिए –

संबंधित मुद्दे