मावेन pom.xml से अप्रयुक्त निर्भरता को हटाने का एक सरल तरीका है?


277

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


2
: यदि आप इंटेलीजे का उपयोग कर रहे हैं, यह देखने के jonnyzzz.com/blog/2013/05/13/... मृत लिंक के मामले में: Jonnyzzz निर्भरता प्लगइन
Benj

3
@Benj मैंने इस जॉनीज़ प्लगइन का उपयोग करने की कोशिश की, और यह बेकार था। अधिकांश समय यह किसी भी अप्रयुक्त निर्भरता को नहीं मिलेगा, और कभी-कभी जब यह ऐसा होता है तो यह निर्माण पथ से निर्भरता को हटा देगा। बिल्ड -ग्रेड फ़ाइल से नहीं। मुझे यह समझाने के लिए उचित डॉक भी नहीं मिला कि यह प्लगइन वास्तव में कैसे काम करता है।
vaibhav.g

@ vaibhav.g अपडेट के लिए धन्यवाद। ऐसा लगता है कि 2016 के बाद से चीजें बदल गईं।
बेंज

जवाबों:


222

Maven निर्भरता प्लगइन में मदद मिलेगी, विशेष रूप से dependency:analyzeलक्ष्य:

dependency:analyzeइस परियोजना की निर्भरता का विश्लेषण करता है और निर्धारित करता है कि कौन हैं: उपयोग और घोषित; इस्तेमाल किया और अघोषित; अप्रयुक्त और घोषित।

एक और चीज जो कुछ सफाई करने में मदद कर सकती है वह है मावेन प्रोजेक्ट इंफो रिपोर्ट्स प्लगिन की डिपेंडेंसी कन्वर्जेंस रिपोर्ट


5
मैं इसे ग्रहण में कैसे ट्रिगर कर सकता हूं?
डेनियल श्वेलेव

134
निर्भरता के साथ सावधानी बरतें: विश्लेषण करें, रनटाइम में उपयोग किए जाने वाले कुछ पुस्तकालयों को अप्रयुक्त माना जाता है।
नेरीस

27
रनटाइम की रिपोर्टिंग को रोकने और अप्रयुक्त के रूप में निर्भरता प्रदान करने के लिए, ignoreNonCompileविकल्प को सही पर सेट किया जा सकता है।
सुदीप 20

निर्भरता का उपयोग करते समय सावधानी बरतें: विश्लेषण करें, यहां तक ​​कि मैं 'ejp api3'depedency का उपयोग कर रहा था, लेकिन रिपोर्ट में दिखाया गया कि यह' अप्रयुक्त और घोषित 'है
अखिल एस कामथ

विश्लेषण के परिणामों को समझने के लिए, यह उत्तर देखें: "प्रयुक्त अघोषित निर्भरताएं वे हैं जिनकी आवश्यकता है, लेकिन स्पष्ट रूप से आपकी परियोजना में निर्भरता के रूप में घोषित नहीं किया गया है।" - stackoverflow.com/questions/4565740/…
जनक मीणा

49

आप उपयोग कर सकते हैं dependency:analyze -DignoreNonCompile

यह इस्तेमाल किए गए अघोषित और अप्रयुक्त घोषित आश्रितों की सूची को प्रिंट करेगा (जबकि अप्रयुक्त आश्रित विश्लेषण के लिए runtime/ provided/ test/ systemscopes की अनदेखी )।

इसका उपयोग करते समय सावधान रहें , कुछ पुस्तकालयों का उपयोग runtimeअप्रयुक्त माना जाता है!

अधिक जानकारी के लिए इस लिंक को देखें


4
[प्लस] रनटाइम उल्लेख के लिए १!
गौरव

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

43

जैसा कि अन्य लोगों ने कहा है, आप निर्भरता का उपयोग कर सकते हैं : यह जानने के लिए लक्ष्य का विश्लेषण करें कि कौन सी निर्भरता का उपयोग किया जाता है और घोषित किया जाता है, उपयोग किया जाता है और अघोषित या अप्रयुक्त और घोषित किया जाता है। आपको निर्भरता भी मिल सकती है : अपने निर्भरता प्रबंधन खंड में बेमेल को देखने के लिए विश्लेषण-डिप-एमजीटी उपयोगी।

आप बस अपने POM से अवांछित प्रत्यक्ष निर्भरता को हटा सकते हैं, लेकिन यदि उन्हें तीसरे पक्ष के जार द्वारा पेश किया जाता है, तो आप थर्ड-पार्टी जार <exclusions>को बाहर करने के लिए एक निर्भरता में टैग का उपयोग कर सकते हैं ( विवरण और कुछ चर्चा के लिए निर्भरता बहिष्करण अनुभाग देखें ) । यहाँ वसंत निर्भरता से कॉमन्स-लॉगिंग को छोड़कर एक उदाहरण दिया गया है:

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring</artifactId>
  <version>2.5.5</version>
  <exclusions>
    <exclusion>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
    </exclusion>
  </exclusions> 
</dependency>

3
(IntelliJ) मैंने सवाल पर टिप्पणी के रूप में, जॉनीज़ज़ प्लगइन का उपयोग किया। अच्छा प्लगइन, IntelliJ 2016/01/03 के साथ अच्छी तरह से काम करता है
Benj

34

क्या आपने मावेन डिपेंडेंसी प्लगिन को देखा है ? यह आपके लिए सामान नहीं हटाएगा, लेकिन आपके पास खुद को विश्लेषण करने की अनुमति देने के लिए उपकरण हैं। मैं विशेष रूप से सोच रहा हूँ

mvn dependency:tree

1
बहुत बढ़िया - धन्यवाद (जो मैं देख रहा था वह मुझे नहीं मिल रहा था क्योंकि मैं "स्वच्छ निर्भरता" की खोज में था और यह स्वच्छ प्लगइन को फेंक रहा था !! लेकिन यह आशाजनक लगता है ..

14

मुझे इसी तरह की समस्या थी और उसने एक स्क्रिप्ट लिखने का फैसला किया जो मेरे लिए निर्भरता को दूर करता है। इसका उपयोग करके मैं निर्भरता के आधे से अधिक आसानी से दूर हो गया।

http://samulisiivonen.blogspot.com/2012/01/cleanin-up-maven-dependencies.html


2
ध्यान दें, यह स्क्रिप्ट उपयोग नहीं करती है mvn dependency:analyze। यह सिर्फ हर निर्भरता और जांच को हटाने की कोशिश करता है अगर mvn installकाम करता है।
आहार विशेषज्ञ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.