2012-12-12 14 views
9

जब मैं असेंबली प्लगइन का उपयोग करता हूं, तो मुझे निर्भरता का एक अप्रत्याशित संस्करण (1.5.8) मिल रहा है, लेकिन कहीं और नहीं। मेरी पोम में मेरे पास है:मेवेन असेंबली गलत निर्भरता खींचती है

<dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.6.0</version> 
    </dependency> 

जब मैं चलाने dependency:tree या dependency:list, मैं सही संस्करण और केवल सही संस्करण देखते हैं। जब मैं ग्रहण में चेक करता हूं तो मुझे केवल सही संस्करण दिखाई देता है।

मेरी assembly.xml में मेरे पास है:

<dependencySets> 
    <dependencySet> 
     <outputDirectory>lib</outputDirectory> 
    </dependencySet> 
</dependencySets> 

जिसके परिणामस्वरूप जिप में, मैं slf4j-log4j12-1.5.8.jar मिलता है। कोई विचार नहीं है कि यह कहां से आ रहा है। कोई मदद?

मेवेन 3.0.4 का उपयोग करना।

उत्तर

10

यह एक 'बुरे' विधानसभा प्लगइन संस्करण (2.2 बीटा 5) के कारण था। मेरा pom.xml प्लगइन संस्करण निर्दिष्ट नहीं किया था। जब मैंने इसे स्पष्ट रूप से 2.4 के रूप में चिह्नित किया (या जब आप इसे पढ़ते हैं तो नवीनतम संस्करण!), प्लगइन ने सही निर्भरता खींच ली।

सबक सीखा - आप अपने निर्माण में निम्न चेतावनी मिलता है:

[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-whatever-plugin is missing 
It is highly recommended to fix these problems because they threaten the stability of your build. 

.. इसे ठीक!

+1

धन्यवाद, 2.2-बीटा -5 से 2.4 तक स्विच करने के लिए यह मेरे लिए तय किया गया है :-) –

+0

सटीक समस्या के लिए हेड-बैंगिंग के घंटों के बाद यह प्रश्न इस बारे में है, यह वास्तव में मुझे आवश्यक उत्तर है। धन्यवाद! – Stewart

4
  1. आप अपने Maven रिपोजिटरी से बुरा जार (slf4j-log4j12-1.5.8.jar) हटा सकते हैं और सही वहाँ (slf4j-log4j12-1.6.0.jar) जोड़ने के लिए कोशिश कर सकते हैं। फिर --offline स्विच के साथ अपना निर्माण चलाएं। इस क्षण में मैवेन गलत जार पाने की कोशिश करता है, निर्माण विफल हो जाएगा और मैवेन आपको यह दिखाने के लिए क्या ट्रांजिटिव निर्भरता से दिखाएगा। तो फिर तुम इस के साथ transistive निर्भरता से बाहर:

    <exclusions> 
        <exclusion> 
        <artifactId>slf4j-api</artifactId> 
        <groupId>slf4j-log4j12</groupId> 
        </exclusion> 
    </exclusions> 
    
  2. चेक अगर यह जार आप मिल गया है कि सही ग्रुप है। कुछ लोग बेवकूफ और बुरा विशेष प्रयोजनों के लिए सामान्य जारों के डुप्लीकेट बनाता है जो मेवेन को भ्रमित कर सकता है। विशेष रूप से, जांचें कि क्या आपको इसके बजाय org.jboss.resteasy:slf4j-log4j12 नहीं मिल रहा है। आप Maven-एनफोर्सर-प्लगइन का उपयोग कर, इस तरह अवांछित निर्भरता पर प्रतिबंध लगाने सकता है:

    <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-enforcer-plugin</artifactId> 
        <version>1.0</version> 
        <executions> 
        <execution> 
         <id>enforce-banned-dependencies</id> 
         <goals> 
         <goal>enforce</goal> 
         </goals> 
         <configuration> 
         <rules> 
          <bannedDependencies> 
          <excludes> 
           <exclude>org.slf4j:slf4j-log4j12:1.5.8</exclude> <!-- Wrong version, dude! --> 
           <exclude>commons-logging:*</exclude> <!-- Worst, stupidest, lamest logging framework ever! --> 
           <exclude>org.jboss.resteasy:slf4j-simple</exclude> <!-- Evil JAR duplication. --> 
           <exclude>org.jboss.resteasy:slf4j-api</exclude> <!-- Evil JAR duplication. --> 
           <exclude>org.jboss.resteasy:slf4j-log4j12</exclude> <!-- Evil JAR duplication. --> 
           <exclude>org.jboss.resteasy:jackson-core-asl</exclude> <!-- Evil JAR duplication. --> 
           <exclude>org.jboss.resteasy:jackson-mapper-asl</exclude> <!-- Evil JAR duplication. --> 
           <exclude>org.jboss.resteasy:jackson-core-lgpl</exclude> <!-- Evil JAR duplication. --> 
           <exclude>org.jboss.resteasy:jackson-mapper-lgpl</exclude> <!-- Evil JAR duplication. --> 
           <exclude>org.codehaus.jackson:jackson-core-lgpl</exclude> <!-- Two distinct packages for the exact same thing always creates conflicts. We want the ASL one. --> 
           <exclude>org.codehaus.jackson:jackson-mapper-lgpl</exclude> <!-- Two distinct packages for the exact same thing always creates conflicts. We want the ASL one. --> 
           <exclude>velocity-tools:velocity-tools</exclude> <!-- Was renamed. --> 
           <exclude>velocity:velocity</exclude> <!-- Was renamed. --> 
           <exclude>struts:struts</exclude> <!-- Was renamed. --> 
           <exclude>javassist:javassist</exclude> <!-- Was renamed. --> 
           <exclude>axis:*</exclude> <!-- Was renamed to org.apache.axis:* and wsdl4j:wsdl4j . --> 
           <exclude>commons-beanutils:commons-beanutils-core</exclude> <!-- Redundant package. --> 
           <exclude>xpp3:xpp3_min</exclude> <!-- Redundant package. --> 
           <exclude>xml-apis:xml-apis:2.0.0</exclude> <!-- Bad package, for some strange reason 2.0.x is inferior to 1.4.x. --> 
           <exclude>xml-apis:xml-apis:2.0.2</exclude> <!-- Bad package, for some strange reason 2.0.x is inferior to 1.4.x. --> 
           <exclude>quartz:quartz</exclude> <!-- Was renamed. --> 
          </excludes> 
          </bannedDependencies> 
         </rules> 
         </configuration> 
        </execution> 
        </executions> 
    </plugin> 
    
+1

या सरल रन एमवीएन निर्भरता: पारगमन निर्भरता को खोजने के लिए पेड़ और उपरोक्त वर्णित जार को बाहर कर दें। – om39a

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