2008-11-19 10 views
12

मैं ग्रहण का उपयोग कर एक जावा ऐप लिख रहा हूं जो कुछ बाहरी जारों का संदर्भ देता है और कुछ कॉन्फ़िगरेशन फ़ाइलों को उपयोगकर्ता पहुंच योग्य होने की आवश्यकता होती है।जावा एप्लिकेशन को कई निर्भरताओं के साथ पैकेज करने का सबसे अच्छा तरीका क्या है?

  1. तैनाती के लिए यह पैकेज का सबसे अच्छा तरीका क्या है?

  2. मेरी समझ यह है कि आप जार को किसी अन्य जार फ़ाइल में नहीं डाल सकते हैं, क्या यह सही है?

  3. क्या मैं अपनी कॉन्फ़िगरेशन फ़ाइलों को जार से बाहर रख सकता हूं और फिर भी उन्हें कोड में संदर्भित कर सकता हूं? या कॉन्फ़िगरेशन फ़ाइल का पथ कमांड लाइन तर्क होना चाहिए?

  4. क्या ग्रहण के लिए कोई तृतीय पक्ष प्लगइन्स आसान बनाने में मदद करने के लिए हैं? मैं फिलहाल एक चींटी बिल्ड फ़ाइल का उपयोग कर रहा हूं लेकिन मुझे यकीन नहीं है कि मुझे पता है कि मैं क्या कर रहा हूं।

  5. क्या विजुअल स्टूडियो में तैनाती परियोजनाओं का एक समतुल्य है, जो आपको आवश्यक सब कुछ पता लगाएगा और केवल इंस्टॉलर बनायेगा? मैंने पहले install4j का उपयोग किया है, और यह शक्तिशाली था अगर कहीं भी .NET परिनियोजन परियोजनाओं के रूप में स्वचालित नहीं है।

चीयर्स।

उत्तर

6

कोई भी 'सर्वश्रेष्ठ तरीका' नहीं है। यह इस बात पर निर्भर करता है कि आप स्विंग एप्लिकेशन, वेबस्टार्ट, एप्लेट, लाइब्रेरी या वेब एप्लिकेशन को तैनात कर रहे हैं या नहीं। प्रत्येक अलग है।

बिंदु 2 पर, आप सही हैं। जार फ़ाइलों में अन्य जार फाइलें नहीं हो सकती हैं। (ठीक है, तकनीकी रूप से वे कर सकते हैं, यह सिर्फ आंतरिक जार फ़ाइल आपके क्लासपाथ पर नहीं होगी, प्रभावी रूप से यह अर्थ है कि जार फ़ाइलों में जार फाइलें नहीं हैं)।

बिंदु 3 पर, आप निश्चित रूप से जार फ़ाइल के बाहर कॉन्फ़िगरेशन फ़ाइलों का संदर्भ दे सकते हैं। आप आमतौर पर एक फ़ाइल या संसाधन के रूप में एक विन्यास फाइल का संदर्भ कर सकते हैं। यदि आप संसाधन दृष्टिकोण का उपयोग करते हैं, तो यह आमतौर पर कक्षापथ से आता है (एक जार में हो सकता है)। यदि आप फ़ाइल का उपयोग करते हैं, तो आप फ़ाइल नाम निर्दिष्ट करते हैं (जार में नहीं)।

सामान्य रूप से, अधिकांश जावा डेवलपर तैनाती प्राप्त करने के लिए Apache Ant का उपयोग करेंगे। यह अच्छी तरह से प्रलेखित है, तो एक नज़र डालें।

+0

प्वाइंट 5 पर, मेवेन (हालांकि कुछ विन्यास की आवश्यकता है, लेकिन बहुत कुछ नहीं), आपकी निर्भरताओं का प्रबंधन करता है। –

0

चींटी। यह दुनिया में सबसे अच्छी बात नहीं है, लेकिन यह मानक है, यह अपाचे है, और यह काम करता है। वेब पर कुछ अच्छे उदाहरण हैं कि किसी के लिए एक सरल build.xml कैसे बनाएं, और इसमें 'युद्ध' कार्य जैसी कुछ विशेषताएं हैं जो जानता है कि जार में सभी मूलभूत सामग्री (कक्षाएं, वेब.एक्सएमएल इत्यादि) को कैसे रखा जाए। आपके लिए फाइल आप इसे अन्य कॉन्फ़िगरेशन फ़ाइलों और जार लेने के लिए भी कह सकते हैं और यह खुशी से ऐसा करेगा। यह संकलित करने के बारे में भी वास्तव में स्मार्ट है। आप इसे एक निर्देशिका देते हैं, और यह सभी जावा फाइलें पाता है और उन्हें केवल तभी बनाता है जब उनकी क्लासफ़ाइल पुरानी हो, इसलिए आपको बिना किसी प्रयास के पारंपरिक पारंपरिक कार्यक्षमता कुछ मिलती है।

+0

यदि आप कम से कम टिप्पणी करने के लिए लड़के को वोट देने जा रहे हैं तो मुझे यह बताने के लिए टिप्पणी क्यों करें कि यह बुरी सलाह क्यों है? –

6

(1) चींटी का एक विकल्प जिसे आप विचार करना चाहते हैं maven है।

मेवेन के लिए एक संक्षिप्त परिचय here पाया जा सकता है।

एक जेएआर बनाने के लिए, मेवेन में jar प्लगइन है, जो सभी आश्रित जार को आपके जार के मैनिफेस्ट में सूचीबद्ध करने की प्रक्रिया को स्वचालित कर सकता है।

यदि आप ग्रहण का उपयोग कर रहे हैं, तो maven integration भी डाउनलोड करें।

(2) OneJar का उपयोग करने का एक और विकल्प है (अस्वीकरण: मैंने इसे आजमाया नहीं है)।

+0

यह देखते हुए कि आप इसकी आवाज़ से एक स्टैंडअलोन ऐप चला रहे हैं वनजर मेरी निश्चित सिफारिश होगी। फायदों में से एक यह है कि यह आपको जार पर डबल-क्लिक करके विंडोज़ में ऐप चलाने की अनुमति देगा। –

0

आप अन्य जावा परियोजनाओं (जैसे जेएमटर, स्क्वायरेल एसक्यूएल, जेडिट, सेर्नुनोस इत्यादि) देख सकते हैं। प्रत्येक पैकेज उनके अनुप्रयोगों को थोड़ा अलग करता है, इसलिए जब आप इनकी समीक्षा करते हैं तो अपने लक्ष्यों पर विचार करें।

3

उत्तर इस बात पर निर्भर करते हैं कि आप किस प्रकार की चीज बना रहे हैं।

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

निर्भरताओं को ट्रैक करने के लिए पोम जानकारी के साथ एक मेवेन रेपो में एक जार प्रकाशित करना पुस्तकालयों के लिए भी एक उत्कृष्ट विकल्प है। यदि आप ऐसा करते हैं, तो कृपया अपने दस्तावेज़ों में अपने मेवेन निर्देशांक प्रकाशित करें!

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

अपनी तैनाती संरचना (उर्फ "किट") बनाने के लिए आप जो भी निर्माण प्रणाली का उपयोग कर रहे हैं उसमें एक दोहराने योग्य प्रक्रिया बनाना चाहेंगे। चींटी के इस उदाहरण के उदाहरण हैं और मेवेन में असेंबली प्लगइन्स हैं जो मदद कर सकते हैं। आम तौर पर आप प्रोग्राम को शुरू करने के लिए अपने कोड, किसी निर्भरता, स्क्रिप्ट्स का एक जार, शायद एक जेआरई और किसी भी अन्य संसाधनों को शामिल करना चाहते हैं।

यदि आप इंस्टॉलर बनाना चाहते हैं, तो मुफ्त और वाणिज्यिक दोनों विकल्प हैं। मुझे पता है कि कुछ लोगों को हाल ही में मुफ्त IzPack के साथ अच्छे अनुभव हुए हैं लेकिन अपने विकल्पों की जांच करें।

1

ठीक है, आप एक स्टैंडअलोन डेस्कटॉप अनुप्रयोग की तैनाती की बात कर रहे हैं, तो:

इससे पहले कि हम वेब पर स्विच शुरू हम तीन तैनाती अभिलेखागार, खिड़कियों के लिए एक, मैक के लिए और एक अन्य प्लेटफार्मों के लिए बनाने की है ।

खिड़कियों पर हम सफलतापूर्वक इस्तेमाल किया है Nullsoft Scriptable Install System और उसके ant task (यह के लिए जाना जाता बड़े Winamp संस्करणों द्वारा उपयोग है), हालांकि कुछ कमियां हैं:

  • यह विंडोज़ AFAIR
  • आपके पास पर केवल प्रयोग करने योग्य है हाथ से कुछ काम करने के लिए, यानी विज़ार्ड-निर्मित स्क्रिप्ट को अनुकूलित करना AFAIR

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

मैक ओएस एक्स पर आपके जावा फाइलों से .app फ़ाइल बनाने के लिए ant task है ताकि आप इसे मूल ओएस एक्स एप्लिकेशन की तरह शुरू कर सकें। लेकिन अपने घर के डीआईआर में किसी भी सेटिंग को लिखने और इसके बजाए एप्लिकेशन डीआईआर का उपयोग करने से सावधान रहें।

दूसरों के लिए आपको उम्मीद है कि वे एक * एक्स एनवी में हैं और एप्लिकेशन को शुरू करने के लिए अपने ऐप को खोल स्क्रिप्ट के साथ तैनात करते हैं।

किसी भी मामले में आपको अपने आवेदन के लिए एक्सेस अधिकार प्राप्त करने के लिए अपने कस्टम policy file को तैनात करना पड़ सकता है।

यदि आप सभी पैकेजिंग और सामान से छुटकारा पाना चाहते हैं तो आपको गंभीरता से web start का उपयोग करने पर विचार करना चाहिए। हम इसे का उपयोग करने जा के बाद से ज्यादा समय बचाया है, यानी हमारे तैनाती प्रक्रिया को सरल बनाया, अद्यतन आदि का ख्याल रखता है

अद्यतन 2014

उपयोग maven assembly plugin, खंड देखें "एक निष्पादन योग्य जार बनाना"

3

आप FatJar कोशिश करनी चाहिए। यह एक ग्रहण प्लगइन है कि परियोजना पर सिर्फ एक दायाँ क्लिक के साथ एक जार फ़ाइल बना सकते हैं, जिसमें आपको एप्लिकेशन चलाने की आवश्यकता है, जिसमें नीसमी तीसरी पार्टी जार भी शामिल है।

हम अपने ग्राहकों को हमारे सॉफ़्टवेयर पैकेजों को तैनात करने के लिए, हमारे ग्राहकों को हमारे सॉफ़्टवेयर पैकेजों को तैनात करने के लिए, JSmooth के साथ JSmooth के साथ संयोजन में, और एक आकर्षण की तरह काम करते हैं।