2010-10-06 18 views
7

के साथ एक सिंगल जार प्रदान करना मैं अपने ग्राहकों को एक .jar फ़ाइल वितरित करना चाहता हूं, लेकिन मेरी परियोजना वर्तमान में मेवेन के साथ बनाई गई है, और मेरे पास कई मॉड्यूल हैं जो प्रत्येक को एकल .jar उत्पन्न करते हैं।एक मेवेन प्रोजेक्ट

मुझे अलग घोंसला पता है .jar फ़ाइलें एक अच्छा विचार नहीं है, इसलिए मुझे यकीन नहीं है कि मैं इसे कैसे प्राप्त कर सकता हूं।

कोई विचार?

उत्तर

8

सबसे पहले, खुद से पूछें कि क्या आपके पास अपने आवेदन और उसकी सभी निर्भरताओं को एक जार में पैकेज करने का वास्तव में अच्छा कारण है। मुझे इसके लिए बहुत अच्छा कारण नहीं मिला है (अधिकांश कारण संगठनात्मक नीति मूर्खता या केवल सादे अज्ञानता से संबंधित हैं)। जाने का रास्ता अपने स्वयं के जार में पुस्तकालयों रखने के लिए और और या तो

  1. classpath सेटअप के साथ एक निष्पादन .jar उचित रूप से में के साथ अपने पुस्तकालयों के सभी अपने आवेदन युक्त एक .zip/.tar.gz की आपूर्ति करने के लिए है अपने MANFIEST.MF फ़ाइल
  2. एक .bat/.sh स्क्रिप्ट जावा का आह्वान और एक उचित अपने deps

इसके विपरीत के आधार पर classpath बनाता है, JNLP (बेहतर जावा वेब प्रारंभ के रूप में जाना जाता है) का उपयोग करें।

यदि आप वास्तव में अपने सभी निर्भरताओं और अपने आवेदन को एक जार के नीचे बंडल करना चाहते हैं, तो आप "jar-with-dependencies" predefined assembly का उपयोग करना चाहते हैं। maven assembly plugin usage page यह भी दिखाता है कि आप इसे कैसे उठा सकते हैं।

+1

उत्तर के लिए धन्यवाद। मैं एक क्लाइंट के लिए एक वेब सेवा एपीआई प्रदान कर रहा हूं, वास्तव में हमारे जावा क्लाइंट के लिए जीवन को आसान बनाने के लिए, हम एक एकल वितरित करना चाहते हैं .jar - वे डब्लूएसडीएल से कोड भी उत्पन्न कर सकते हैं। कुछ Google वेब सेवाओं में यह असामान्य नहीं है। –

1

वास्तव में, घोंसला .jar फ़ाइलें संभव नहीं है। एक जार में अन्य जार नहीं हो सकते हैं।

.war और .ear फ़ाइलों में जार हो सकते हैं, और यदि आप J2EE एप्लिकेशन वितरित कर रहे हैं तो यह एक अच्छा समाधान है।

यदि आपका ऐप सिर्फ जे 2 एसई है, तो मैं Maven Assembly plugin को देखने की सलाह देता हूं। जैसा कि नाम का तात्पर्य है, यह आपको अपने निर्माण का एक बाइनरी वितरण बनाने की अनुमति देता है।

13

आप वास्तव में इस दिशा में जाने के लिए चाहते हैं, तो ऐसा करने के लिए कई तरीके हैं कि:

    Maven Assembly Plugin और शायद jar-with-dependencies पूर्वनिर्धारित विधानसभा वर्णनकर्ता (कि खोल जाएगा निर्भरता) के साथ
  • साथ
  • Maven Shade Plugin (ऊपर से एक के लिए समान है, लेकिन और अधिक लचीलापन देता है)
  • Maven One-Jar Plugin (कि One-JAR का उपयोग करता है और उसके कस्टम classloader साथ
  • जार के घोंसले अनुमति देने के लिए)

आपकी सटीक आवश्यकताओं और बाधाओं के आधार पर, आप एक या दूसरे को पसंद कर सकते हैं।

1

आप मेवेन छाया प्लगइन को भी आजमा सकते हैं। http://maven.apache.org/plugins/maven-shade-plugin/

छाया प्लगइन का उपयोग करने के तरीके पर सामान्य निर्देश उपयोग पृष्ठ पर पाए जा सकते हैं। नीचे दिए गए उदाहरणों में कुछ और विशिष्ट उपयोग मामलों का वर्णन किया गया है। अंतिम लेकिन कम से कम नहीं, उपयोगकर्ता कभी-कभी प्लगइन के विकी पेज पर अतिरिक्त उदाहरण, टिप्स या इरेटा का योगदान करते हैं।

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

यदि आपको लगता है कि प्लगइन में कोई सुविधा गुम है या कोई दोष है, तो आप हमारे समस्या ट्रैकर में एक सुविधा अनुरोध या बग रिपोर्ट भर सकते हैं। एक नया मुद्दा बनाते समय, कृपया अपनी चिंता का विस्तृत विवरण प्रदान करें। विशेष रूप से बग को ठीक करने के लिए यह महत्वपूर्ण है कि डेवलपर्स आपकी समस्या का पुनरुत्पादन कर सकें। इस कारण से, पूरे डीबग लॉग, पीओएम या इस मुद्दे से जुड़ी सबसे पसंदीदा रूप से छोटी डेमो परियोजनाओं की बहुत सराहना की जाती है। बेशक, पैच भी स्वागत है। योगदानकर्ता हमारे स्रोत भंडार से परियोजना की जांच कर सकते हैं और मैवेन के साथ मदद करने के लिए मार्गदर्शिका में पूरक जानकारी प्राप्त करेंगे।

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