मैं इस परिदृश्य, सरलीकृत है।मैं एक परियोजना की निर्भरताओं का उपयोग कैसे कर सकता हूं जिसे प्रदान किया गया है?</p> <pre><code>projectX ---> projectA ---> projectB </code></pre> <p>कहाँ <code>---></code> का अर्थ है "पर निर्भर करता है":
प्रोजेक्टबी वास्तव में सरल है। यह किसी भी निर्भरता की घोषणा नहीं करता है। वास्तव में, केवल प्रासंगिक हिस्सा यह है:
<packaging>jar</packaging>
PROJECTA की pom.xml में मैं projectB निर्भरता घोषणा की है:
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>projectB</artifactId>
<version>1.0.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
और projectX की pom.xml में मेरे पास है:
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>projectA</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
समस्या projectX घटकों (वर्गों और इस तरह) है कि projectB में परिभाषित कर रहे हैं उपयोग करने के लिए की जरूरत है। यदि मैं प्रोजेक्ट ए में प्रोजेक्ट ए के लिए compile
का उपयोग करने के लिए प्रोजेक्ट ए में स्कोप बदलता हूं, तो सब कुछ काम करेगा, लेकिन प्रोजेक्टएक्स में युद्ध उत्पन्न करते समय प्रोजेक्टबी को शामिल किया जाएगा, और मुझे इस लाइब्रेरी को जेनरेटेड युद्ध से बाहर करने की आवश्यकता है क्योंकि मैं प्रोजेक्ट बी को अन्य में प्रदान कर रहा हूं परियोजना का हिस्सा
वास्तविक परिदृश्य में, मेरे पास प्रोजेक्ट बी जैसी कई निर्भरताएं हैं जो प्रोजेक्ट ए को प्रभावित करती हैं, इसलिए जेनरेट किए गए युद्ध के आकार को कम करने के लिए, मैं उन्हें प्रदान किए गए अनुसार सेट करना चाहता हूं, लेकिन फिर प्रोजेक्टएक्स उन किसी भी में परिभाषित घटकों का उपयोग नहीं कर सकता पुस्तकालयों। घटकों का उदाहरण: वसंत, हाइबरनेट, आदि
प्रश्न: क्या कई जगहों पर निर्भरताओं को फिर से घोषित किए बिना इसे साफ तरीके से हासिल करने का कोई तरीका है?
प्रदान की गई निर्भरताएं ट्रांजिटिव नहीं हैं http://stackoverflow.com/questions/34904558/why-arent-provided-maven- निर्भरता-transitive/। यह इस तरह मेवेन में बनाया गया है और यह संभवतः कभी नहीं बदलेगा। – Tunaki
@ टुनकी जो इस प्रश्न के लिए प्रेरणा है (: –
हाँ, लेकिन यह निष्कर्ष यहां है: * ऐसी निर्भरता का उपयोग करना गलत है जिसे आप घोषित नहीं करते हैं। * वहां मेरा जवाब देखें, इसके लिए एक बग रिपोर्ट है। आप ' आपको इसे स्पष्ट रूप से घोषित करना होगा। – Tunaki