2015-10-01 6 views
5

मेरी build.gradle फ़ाइल में मैं लाइन जोड़ने की जरूरत है। मुझे आश्चर्य है कि यह रेखा वास्तव में क्या करती है? मैं एक्लिप्स लुना में ग्रैडल प्लगइन का उपयोग करता हूं। मैं एक जावा प्रोजेक्ट पर जार बनाता हूं जो किसी दूसरे पर निर्भर करता है।छाया प्लगइन ग्रैडल: mergeServiceFiles() क्या करता है?</p> <pre><code>shadowJar { mergeServiceFiles() } </code></pre> <p>अन्यथा जार ठीक से नहीं चलता है:

उत्तर

1

आप अपने आप में कोड में इसकी जांच क्यों नहीं करते? mergeServiceFiles वास्तव में घोषित किया जाता है here और इसके कार्यान्वयन इस प्रकार है:

/** 
* Syntactic sugar for merging service files in JARs 
* @return 
*/ 
public ShadowJar mergeServiceFiles() { 
    try { 
     transform(ServiceFileTransformer.class); 
    } catch (IllegalAccessException e) { 
    } catch (InstantiationException e) { 
    } 
    return this; 
} 

आप इसे ServiceFileTransfomer जो here परिभाषित किया गया है का उपयोग करता है देख सकते हैं। अपने डॉक्स से:

org.apache.maven.plugins.shade.resource.ServiceResourceTransformer.java

से

संसाधन ट्रांसफार्मर है कि एक ही संसाधन में META-INF/सेवा संसाधन में प्रविष्टियों संलग्न कर देता है संशोधित। उदाहरण के लिए, यदि कई मेटा-आईएनएफ/सेवाएं/org.apache.maven.project.ProjectBuilder संसाधन कई JARs में फैले हैं तो व्यक्तिगत प्रविष्टियां एक मेटा-आईएनएफ/सेवाओं/org.apache में सम्मिलित होंगी। maven.project.ProjectBuilder संसाधन छायांकन प्रक्रिया द्वारा उत्पादित परिणामी जेएआर में पैक किया गया।

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