2012-01-23 23 views
5

की रूट में 'MANIFEST.MF` फ़ाइल डालने के लिए ग्रैडल के मैनिफेस्ट एपीआई का उपयोग कैसे करें हम जावा प्लगइन की विशेषता MANIFEST.MF फ़ाइलों को jar कलाकृतियों में लिखने के लिए उपयोग करते हैं।एक ज़िप फ़ाइल

हम GWT परियोजनाओं के निर्माण के लिए भी ग्रेडल का उपयोग करते हैं और आउटपुट जिन्हें हमने उन परियोजनाओं के लिए परिभाषित किया है, zip है। मैं उस ज़िप फ़ाइल की रूट में MANIFEST.MF फ़ाइल शामिल करना चाहता हूं।

मैंने type: Jar का एक कार्य का उपयोग करने का प्रयास किया है, इसलिए मैं इसकी manifest संपत्ति का उपयोग कर सकता हूं लेकिन समस्या यह है कि मैनिफेस्ट फ़ाइल META-INF/MANIFEST.MF में लिखी गई है, जो मैं नहीं चाहता हूं। कारण यह है कि हम मुख्य ऐप में संग्रह को अनजिप करते हैं और मुझे अपने स्वयं के घृणित उद्देश्यों के लिए रनटाइम पर MANIFEST.MF फ़ाइल का संदर्भ देने में सक्षम होना चाहिए।

तो अभी संग्रह इस तरह दिखता है:

/gwtdirectory/ 
/gwtdirectory/file1 
/gwtdirectory/file2 
/gwtdirectory/... 
/gwtdirectory/filen 

और मैं की जरूरत है इसे इस तरह ले लिया:

/gwtdirectory/ 
/gwtdirectory/META-INF/MANIFEST.MF 
/gwtdirectory/file1 
/gwtdirectory/file2 
/gwtdirectory/... 
/gwtdirectory/filen 
:

/gwtdirectory/ 
/gwtdirectory/MANIFEST.MF 
/gwtdirectory/file1 
/gwtdirectory/file2 
/gwtdirectory/... 
/gwtdirectory/filen 

मैं पहले से ही सफलतापूर्वक मिल गया है यह तरह देखने के लिए

परिभाषा के माध्यम से:

task pack(type: Jar){ 
    manifest { 
    attributes(...) 
    } 
    extension = 'zip' 
    from gwt.destinationDir 
} 

writeTo विधि शक्तिशाली वादा करता है, सिवाय इसके कि मुझे उस इंटरफ़ेस का कार्यान्वयन नहीं मिल रहा है जिसका मैं उपयोग कर सकता हूं और मैं अपना खुद का लिखने से बचने की कोशिश कर रहा हूं।

विचार?

+0

'जार 'कार्य को' मेनिफेस्ट() 'प्राप्त किया गया है जो' प्रकट 'कार्यान्वयन देता है। तो मुझे लगता है कि आपको 'पैक (टाइप: जार) {manifest.writeTo (...)} 'करने में सक्षम होना चाहिए। – rodion

उत्तर

3

Jar task पर देखकर, ऐसा नहीं लगता है कि मैनिफेस्ट फ़ाइल का स्थान कॉन्फ़िगर करने योग्य है।

आप एक मेनिफेस्ट बनाने के लिए ग्रेले के अपने DefaultManifest कार्यान्वयन का उपयोग करना चाह सकते हैं और फिर अपनी फ़ाइल फ़ाइल में from के साथ इस फ़ाइल को शामिल कर सकते हैं।

आप इस कोशिश कर सकते हैं:

import org.gradle.api.java.archives.internal.DefaultManifest 
import org.gradle.api.internal.file.IdentityFileResolver 

File manifestFile = file('build/myAwesomeManifest.mf') 

task generateManifest << { 
    manifest = new DefaultManifest(new IdentityFileResolver()) 

    // add some attributes 
    manifest.attributes(["attr1":"value1", "attr2":"value2"]) 

    // write it to a file 
    manifest.writeTo(manifestFile) 
} 
2

मुझे लगता है कि है कि वास्तव में क्या आप Gradle पुस्तिका से this chapter के अंत में देख रहे हैं।

jar.manifest.writeTo("$buildDir/mymanifest.mf") 
+0

मैंने समाधान से ऊपर की कोशिश की है, लेकिन यह काम नहीं किया है, क्या आप कृपया कुछ उदाहरण जोड़ सकते हैं –

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