2010-11-19 11 views
21

क्या आपको लगता है कि एक मेवेन पोम में पाया जा सकता है कि हर transitive निर्भरताओं को हटाने के लिए एक अच्छा अभ्यास है?मेवेन: क्या मुझे घोषित निर्भरताओं को रखना या हटा देना चाहिए जो पारगमन निर्भरता भी हैं?

उदाहरण:
मेरे परियोजना ए और बी पर निर्भर करता है
बी मैं अपने पोम में बी रखने या उसे निकालने चाहिए भी ए
की एक सकर्मक निर्भरता है?

सबसे अच्छा क्या है:
सभी ज्ञात जार, यहां तक ​​कि संक्रमणीय, पोम पर घोषित या केवल शीर्ष स्तर के जार रखने के लिए?

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

उत्तर

19

यदि आपकी परियोजना में बी पर प्रत्यक्ष निर्भरता है तो बी को यह रखना चाहिए कि बी बी की एक पारस्परिक निर्भरता है। यह हो सकता है कि अगले संस्करण में ए बी का उपयोग नहीं करेगा, आपको पोम को पुन: स्थापित करना होगा .xml।

आम तौर पर, मेवेन निर्भरताओं को तार्किक परियोजना निर्भरताओं को प्रतिबिंबित करना चाहिए।

+0

उत्तर और लिंक के लिए धन्यवाद। मुझे यह सलाह पसंद है: 'तार्किक परियोजना निर्भरताओं को प्रतिबिंबित करें' – Guillaume

+0

क्या आपको नहीं लगता कि आपको आंतरिक और बाहरी निर्भरताओं के बीच एक भेद बनाना चाहिए? मेरे पास एक ही सवाल था: http://stackoverflow.com/questions/20800571/are-there-any-reasons-to-keep-explicit- निर्भरता- घोषणा-for-my-own-transit मैं अभी भी एक कारण नहीं देख सकता मुझे अपने मॉड्यूल के बीच सभी निर्भरताओं को घोषित करने के साथ परेशान क्यों होना चाहिए। यदि एपीआई बदल जाएंगी और प्रोजेक्ट संकलित करने में विफल रहेगा, तो मैं इसे ठीक कर दूंगा और संभवतः कोड की रखरखाव में सुधार कर सकता हूं :) –

+0

प्रश्न/उत्तर से संबंधित लिंक कैसा है? –

11

मैं करना पसंद करते हैं सकर्मक निर्भरता की घोषणा से बचने होता है, और स्पष्ट रूप से उन्हें उन्हें पोम अगर उस के लिए एक अच्छा कारण है में शामिल हैं।

  • मैं करने की कोशिश संभव के रूप में सरल रूप में पोम रखें: यहाँ मेरी तर्क हैं। संक्रमणीय निर्भरताओं के साथ घोषित किया गया है, भले ही वे स्पष्ट रूप से उपयोग किए जाते हैं, मेवेन पोम अधिक वर्बोज़ बन जाता है।

सकर्मक निर्भरता (भले ही आप उन्हें स्पष्ट रूप से की जरूरत है) की घोषणा के द्वारा:

घोषणा में
  • अतिरिक्तता शुरू की है, क्योंकि इस जानकारी विरूपण साक्ष्य की पोम डिस्क्रिप्टर में पहले से ही है कि आवश्यक है।

  • विरूपण साक्ष्य का एक नया संस्करण आवश्यक हैंtransitive dependency पर अब निर्भर नहीं करता है, तो आप अपने आप को अपने विधानसभा से transitive dependency दूर करने के लिए, अगर है कि transitive dependency स्पष्ट रूप से घोषित किया गया है।

  • पारगमन की जानकारी स्पष्ट रूप से संक्रमणीय निर्भरता घोषित करके छेड़छाड़ की जाती है।

यह निम्न मामले में स्पष्ट रूप से समझ में बनाने निर्भरता शामिल करने के लिए होगा:

  • आप एक से दो निर्भरता है, C और D कहते हैं, कि सकर्मक निर्भरता B के विभिन्न संस्करणों (की आवश्यकता होती है या आपको अपनी परियोजना में B के विशिष्ट संस्करण की आवश्यकता है)।इस मामले में आपको B का संस्करण चुनना होगा और स्पष्ट रूप से संक्रमणीय निर्भरता T परिभाषित करना होगा। (*)

निष्कर्ष: मैं घोषणा से बचने के लिए, जब तक यह समझ में आता है विरूपण साक्ष्य विशेष रूप से घोषित करने की कोशिश करेगा (जैसे मामले में (*))।

+0

यदि आप इसी तरह की चर्चा में भाग लेना चाहते हैं: http://stackoverflow.com/questions/20800571/are-there-any-reasons-to-keep-explicit-dependency-declaration-for-my-own-transit –

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