2012-04-26 13 views
5

जब मैं एक बंडल का निर्माण कर रहा हूं, तो मुझे अपने मामले में कुछ जार (http-core और http-client) एम्बेड करने की आवश्यकता है। फ्लेक्स प्लगइन के साथ मेवेन का उपयोग करना मुझे बड़ी आयात सूची मिलती है - कुछ सामान जिन्हें मुझे आवश्यकता नहीं है। फिलहाल मैं उन पैकेजों को नकार रहा हूं जिनकी मुझे <Import-Package> में आवश्यकता नहीं है, लेकिन मैं Import-Package: resolution:=optional का भी उपयोग कर सकता हूं। मैं सोच रहा था कि पसंदीदा तरीका क्या है और किसी भी दृष्टिकोण के फायदे/नुकसान क्या हैं?ओएसजीआई बंडल में जार एम्बेड करते समय, अनदेखा या वैकल्पिक पुनर्वसन?

+1

क्यों न केवल अपने जरूरी जार को बंडल के रूप में तैनात करें और एम्बेडिंग के बजाय स्वयं पर उचित निर्भरताएं जोड़ें। – Robin

उत्तर

5

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

bndtools और maven में आप बीएनडी का उपयोग करते हैं, और बीएनडी केवल आपके बंडल में जार के हिस्से को कॉपी करना बहुत आसान बनाता है। इस तरह आप निर्भरताओं को कम कर सकते हैं। आपको आवश्यक पैकेजों की प्रतिलिपि बनाने के लिए केवल निजी-पैकेज का उपयोग करें और फिर आयात देखें। यदि आप ऐसा कुछ आयात करते हैं जो आपको लगता है कि आपको आवश्यकता है, तो इसे निजी-पैकेज में जोड़ें (bndtools में आप इसे ड्रैग और ड्रॉप के साथ कर सकते हैं)।

अंत में आप शायद कई अनावश्यक आयात से छुटकारा पा सकते हैं। हालांकि, आमतौर पर कुछ बाएं होते हैं। = आयात-पैकेज बयान में वैकल्पिक: उस मामले में उन्हें संकल्प के साथ सजाने

Import-Package: com.oracle.whatever; resolution:=optional, * 

मत भूलना अंत में *।