2013-07-16 7 views
9

The 3.1.0 release of Maven सोनाटाइप एदर (org.sonatype.aether) के बजाय एक्लिप्स एदर (org.eclipse.aether) पर निर्भर करता है। इस तरह के प्लग इन चलाने के लिए प्रयास करें और आप में चलाने होगी:: यह Sonatype aether पर निर्भर प्लगइन्स के लिए अनुकूलता को तोड़ने के लिए लगता है के रूप में https://cwiki.apache.org/confluence/display/MAVEN/AetherClassNotFoundक्या एवेन पर निर्भर एक मैवेन मोजो मैवेन 3.0.एक्स और 3.1.एक्स के साथ संगत हो सकता है?

अब में दर्ज

java.lang.NoClassDefFoundError: org/sonatype/aether/* 
Caused by: java.lang.ClassNotFoundException: org.sonatype.aether.* 

, यह एक मोजो भरोसा करना संभव है एथर क्लासेस (जैसे org.sonatype.aether.RepositorySystemSession) मेवेन 3.0.एक्स और मेवेन 3.1.x दोनों के साथ चलते हैं?

या मुझे एक ही प्लगइन के दो संस्करणों को रिलीज़ करना है, 3.0.x के लिए एक और 3.1.x के लिए एक? इस तरह लागू करनेवाला नियम लाना:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-enforcer-plugin</artifactId> 
    <version>1.3</version> 
    <executions> 
     <execution> 
     <id>enforce-maven</id> 
     <goals> 
      <goal>enforce</goal> 
     </goals> 
     <configuration> 
      <rules> 
      <requireMavenVersion> 
       <version>[3.0,3.1)</version> 
      </requireMavenVersion> 
      </rules> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

I already posted the question on Maven developers mailing list, लेकिन कोई जवाब नहीं अब तक ...

+0

सबसे अच्छी बात यह है कि स्रोत कोड दिखाने के लिए यह कहां विफल रहता है ताकि हम बेहतर संकेत दे सकें। – khmarbaise

उत्तर

2

these plugins के अधिकांश Maven Dependency Tree, जो निर्भरता का सही सेट कोई फर्क नहीं पड़ता Maven संस्करण इकट्ठा करने के लिए सक्षम है पर निर्भर । संस्करण 2.1 को सोनाटाइप एदर के आगे एक्लिप्स एदर का समर्थन करने के लिए जारी किया गया था यदि आपकी प्लगइन इस घटक का उपयोग कर सकती है, तो आपको बचाया जाना चाहिए।

+0

क्या आप कह रहे हैं कि मेरी प्लगइन को सीधे ईथर का उपयोग नहीं करना चाहिए, बल्कि मेवेन निर्भरता पेड़ एपीआई पर भरोसा करना चाहिए? –

+0

यदि यह संभव है, हाँ। आपने यह नहीं बताया है कि आपकी प्लगइन क्या करती है, लेकिन यदि यह निर्भरता या कलाकृतियों के एक (उप) सेट के बारे में है, तो मैवेन-निर्भरता-पेड़ उत्तर है। यह देखने के लिए निर्दिष्ट प्लगइन के स्रोत कोड पर नज़र डालें कि उन्होंने इसे कैसे हल किया। –

+0

@RobertScholte, 'मेवेन-निर्भरता-पेड़' प्लगइन का उपयोग कैसे किया जा सकता है? यह केवल एक ''निर्भरता ग्राफलेखर'] (http://maven.apache.org/shared/maven- निर्भरता-tree/apidocs/org/apache/maven/shared/dependency/graph/DependencyGraphBuilder.html) का खुलासा करता है? –

0

बहुत अच्छा सवाल! मैं कुछ कलाकृतियों को देखने के लिए मेवेन इंडेक्सर का उपयोग कर रहा हूं। मैं प्रोग्रामेटिक रूप से केंद्रीय और चल रहे प्रश्नों से मेवेन इंडेक्स डाउनलोड कर रहा हूं। यह मेरा तरीका है:

public IteratorSearchResponse executeGroupArtifactSearch(String group, String artifact) throws Exception { 
     Query groupIdQ  = indexer.constructQuery(MAVEN.GROUP_ID, new SourcedSearchExpression(group)); 
     Query artifactIdQ = indexer.constructQuery(MAVEN.ARTIFACT_ID, new SourcedSearchExpression(artifact)); 
     BooleanQuery query = new BooleanQuery(); 
     query.add(groupIdQ , Occur.MUST); 
     query.add(artifactIdQ, Occur.MUST); 
     query.add(indexer.constructQuery(MAVEN.CLASSIFIER, new SourcedSearchExpression(Field.NOT_PRESENT)), Occur.MUST_NOT); 
     IteratorSearchRequest request = new IteratorSearchRequest(query, Collections.singletonList(centralContext), null); 
     IteratorSearchResponse response = indexer.searchIterator(request); 
     return response; 
    } 

जब से मैं 3.1.0 maven के लिए अद्यतन और org.eclipse.aether मैं इस अपवाद हो रही है:

Caused by: java.lang.ClassNotFoundException: org.sonatype.aether.version.InvalidVersionSpecificationException 
    at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50) 
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:244) 
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:230) 
    ... 30 more 

ऐसा लगता है अभी भी है कि 3.1.0 Maven अनुक्रमणिका org.sonatyep.aether के लिए कुछ निर्भरता। उत्सुक है कि मुझे यह अपवाद मिलता है क्योंकि "org.sonatype.aether.version.InvalidVersionSpecificationException" अभी भी प्रोजेक्ट का हिस्सा है।

तो मैं इसे कैसे हल करूं?

+0

ठीक है। मैंने "org.apache.maven.indexer: maven-indexer: 5.1.1" को दोहराया। मैंने सभी निर्भरताओं को "org.sonatype.aether" में हटा दिया और इसे "org.eclipse.aethter" से बदल दिया। सभी परीक्षण हरे हैं और मैंने इसे अपने लोकेल रेपो में तैनात किया है। अब मुझे यह अपवाद मिल रहा है: https://gist.github.com/mosabua/6068386 –

+1

ध्यान रखें कि "org.sonatype.aether" को "org.eclipse.aether" के साथ बदलना मतलब होगा कि यह एम 3 के साथ काम नहीं करेगा। 0.x अब और। –

+0

टिप के लिए धन्यवाद। मैंने गौर किया। –