2012-10-23 23 views
40

मैं Maven का उपयोग करने और m2e ग्रहण एक बहु मॉड्यूल माता पिता बच्चे Maven परियोजना को विन्यस्त कर रहा हूँ, मैं ग्रहण जूनो SR1 से नवीनतम सामान जो m2e 1.2.0"maven-enforcer-plugin (लक्ष्य" लागू करें ") को कैसे हटाया जाए, m2e द्वारा ग्रहण किया गया है" ग्रहण द्वारा चेतावनी?

माता पिता पोम लागू करनेवाला प्लगइन का उपयोग करता है, इसलिए माता-पिता का उपयोग कर रहा pom.xml अपने प्लगइन अनुभाग में निम्नलिखित

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-enforcer-plugin</artifactId> 
    <version>1.1.1</version> 
    <executions> 

     <!-- Enforce that all versions of a transative dependency must converge. --> 
     <execution> 
      <id>enforce</id> 
      <configuration> 
       <rules> 
        <DependencyConvergence /> 
       </rules> 
      </configuration> 
      <goals> 
       <goal>enforce</goal> 
      </goals> 
     </execution> 

     <!-- Black list certain jars --> 
     <execution> 
      <id>enforce-banned-dependencies</id> 
      <goals> 
       <goal>enforce</goal> 
      </goals> 
      <configuration> 
       <rules> 
        <bannedDependencies> 
         <excludes> 
          <exclude> 
           commons-logging:commons-logging 
          </exclude> 
         </excludes> 
        </bannedDependencies> 
       </rules> 
       <fail>true</fail> 
      </configuration> 
     </execution> 

    </executions> 
</plugin> 

बच्चे परियोजनाओं में से हर एक त्रुटि संदेश कह रही है maven-enforcer-plugin (goal "enforce") is ignored by m2e.

  • इस संदेश का अर्थ क्या है है?
  • मैं इस संदेश से छुटकारा पाने के लिए चीजों को कैसे कॉन्फ़िगर कर सकता हूं?
  • क्या मुझे ग्रहण परियोजना सेटिंग्स या pom.xml सेटिंग्स को कॉन्फ़िगर करने की आवश्यकता है?

उत्तर

52

ग्रहण मेवेन प्लगइन एक परियोजना pom.xml फ़ाइल चलाता है ताकि यह पता चल सके कि मैवेन प्रोजेक्ट कैसे कॉन्फ़िगर किया गया है और मैवेन pom.xml कॉन्फ़िगरेशन को ग्रहण कॉन्फ़िगरेशन में अनुवादित करता है। एक pom.xml मैवेन प्लगइन्स की मनमानी संख्या का संदर्भ दे सकता है और उनमें से प्रत्येक प्लगइन में स्मृति को रिसाव करने की क्षमता होती है, या ऐसी चीजें होती हैं जो ग्रहण करने के लिए हानिकारक होती हैं। तो डिफ़ॉल्ट रूप से m2e ग्रहण प्लगइन किसी भी मेवेन प्लगइन्स को अनदेखा करता है जब तक कि उन मेवेन प्लगइन्स में एक विशेष m2e प्लगइन कनेक्टर न हो जो m2e को ग्रहण प्लगइन को ग्रहण में एकीकृत करने के लिए कहता है। संक्षेप में m2e एक बग्गी मेवेन प्लगइन के खिलाफ ग्रहण जेवीएम प्रक्रिया का बचाव कर रहा है, यह कहकर कि हर मेवेन प्लगइन के लिए मेवेन और ग्रहण के बीच पुल के लिए एक एम 2 कनेक्टर होना आवश्यक है।

तो चेतावनी से छुटकारा पाने के मैं माता पिता pom.xml की मेरी प्लगइन प्रबंधन अनुभाग के लिए निम्न जोड़ा

<build> 
    <pluginManagement> 
    <plugins> 
     <plugin> 
     <groupId>org.eclipse.m2e</groupId> 
     <artifactId>lifecycle-mapping</artifactId> 
     <version>1.0.0</version> 
     <configuration> 
      <lifecycleMappingMetadata> 
      <pluginExecutions> 
       <pluginExecution> 
       <pluginExecutionFilter> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-enforcer-plugin</artifactId> 
        <versionRange>[1.0.0,)</versionRange> 
        <goals> 
        <goal>enforce</goal> 
        </goals> 
       </pluginExecutionFilter> 
       <action> 
        <ignore /> 
       </action> 
       </pluginExecution> 
      </pluginExecutions> 
      </lifecycleMappingMetadata> 
     </configuration> 
     </plugin> 
    </plugins> 
    </pluginManagement> 
</build> 

ऐसा लगता है कि org.eclipse.m2e:lifecycle-mapping एक Maven ग्रहण के साथ संवाद करने के लिए मेटा डेटा रखने के लिए तैयार किया गया है प्लगइन है m2e प्लगइन जब यह एक maven pom.xml को संसाधित करता है और इस जानकारी का उपयोग ग्रहण को बताने के लिए किया जाता है, जो ग्रहण प्लगइन के साथ क्या करता है जो pom.xml में परिभाषित किया जाता है जब ग्रहण ग्रहण यूआई के हिस्से के रूप में eomipse pom.xml चलाता है।

+1

+1 दिलचस्प रूप से पर्याप्त है, यह बच्चे पीओएम पर भी काम करता है। –

+3

@ams आपके उत्तर ने चाल की है! लेकिन ... मैंने लाइफसाइक्ल-मैपिंग प्लगइन को प्लगइन्स सेक्शन में रखा है और यह काम नहीं करता है, इसे प्लगइन में होना चाहिए मैनेजमेंट पोम सेक्शन (जैसा कि आपके उदाहरण में है!) उम्मीद है कि यह किसी को समझने की कोशिश करने के कुछ परेशान मिनट बचाएगा समाधान काम नहीं करता है। –

+0

यदि संभव हो तो संस्करण 1.4+ में maven-enforcer-plugin को अपग्रेड करें। जनवरी 2015 के आसपास कार्ल हेन्ज़ मार्बाइस ने इस मेवेन प्लगइन में एम 2 लाइफसाइकिल मेटाडाटा को इस फिक्स के साथ जोड़ा: "एम 2 मैपिंग जोड़ें", https://issues.apache.org/jira/browse/MENFORCER-219। फिर आपको मैन्युअल रूप से m2e मेटाडेटा नहीं जोड़ना होगा। इस पर आपके प्रयासों के लिए – buzz3791

2

आप में से उन लोगों के लिए केवल एक एफवाईआई है जो आपके बिल्ड मॉडल में आपके आईडीई को कॉन्फ़िगर करने में कोई समस्या है। वर्तमान में केपलर के लिए लक्षित इस वृद्धि अनुरोध पर नज़र रखें रिलीज:

बग 350,414: स्टोर परियोजना pom.xml https://bugs.eclipse.org/bugs/show_bug.cgi?id=350414

+0

Thx। यह अच्छा है कि इसे अगले एम 2 रिलीज में जोड़ा जाएगा। – Snicolas

0

बाहर m2e कनेक्टर्स पर ध्यान नहीं दिया मेरे लिए यह समान मुद्दा

मैं था Maven 3.0.3 और जावा 1,5

और मेरे पोम

<executions> 
        <execution> 
         <id>enforce-versions</id> 
         <goals> 
          <goal>enforce</goal> 
         </goals> 
         <configuration> 
          <rules> 
           <requireMavenVersion> 
            <version>[3.0.3,2.2.1,)</version> 
           </requireMavenVersion> 
           <requireJavaVersion> 
            <version>[1.7, 1.8)</version> 
           </requireJavaVersion> 
          </rules> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
था

जैसा कि आप देख सकते हैं कि मैं वास्तव में नियमों को पूरा नहीं करता हूं, इसलिए मैंने जावा अपडेट किया और एमवीएन जा रहा था और मैं पूरी तरह से तैयार था। उम्मीद है कि यह किसी की मदद करता है।

0

कई प्लगइन निष्पादन फ़िल्टर होने पर एक और त्रुटि मौजूद है। यह pom.xml में सही जगह पर होना चाहिए! मेरे लिए यह पता लगाने के लिए कुरकुरा था क्योंकि विस्थापन की कोई त्रुटि या चेतावनी मौजूद नहीं थी।

यह कई pluginExecutionFilters होने के लिए सही कोड है:

<build> 
    <pluginManagement> 
    <plugins> 
     <plugin> 
     <groupId>org.eclipse.m2e</groupId> 
     <artifactId>lifecycle-mapping</artifactId> 
     <version>1.0.0</version> 
     <configuration> 
     <lifecycleMappingMetadata> 
      <pluginExecutions> 
       <pluginExecution> 
        <pluginExecutionFilter> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-enforcer-plugin</artifactId> 
         <versionRange>[1.0.0,)</versionRange> 
         <goals> 
          <goal>enforce</goal> 
         </goals> 
        </pluginExecutionFilter> 
        <action><ignore/></action> 
       </pluginExecution> 
<!-- now here follows the new filter --> 
       <pluginExecution> 
        <pluginExecutionFilter> 
         <groupId>com.googlecode.maven-java-formatter-plugin</groupId> 
         ... 
4

m2e संस्करण 1.4 और ऊपर से: आप पोम (अभिभावक पोम या परियोजना-पोम) के भीतर की जरूरत जीवन चक्र-विन्यास एकीकृत कर सकते हैं या आप ग्रहण के भीतर वैश्विक m2e-config में सूचनाओं को एकीकृत कर सकते हैं। इसके अलावा आपके पास इन परिवर्तनों को लागू करने के लिए कुछ quickfix-actions हैं।

अंतिम विकल्प m2e-connectors को देखने या एकीकृत m2e-support (उदा। Jaxb-plugins के लिए) के साथ विभिन्न मेवेन-प्लगइन के नए संस्करणों पर स्विच करने के लिए है।

यहां (एंफोर्स-प्लगइन के लिए) मुझे लगता है कि, पोम में परिभाषा सबसे आसान तरीका है।

यह भी देखें: https://www.eclipse.org/m2e/documentation/m2e-execution-not-covered.html

0

कैसे "Maven-एनफोर्सर-प्लगइन (लक्ष्य" लागू ") m2e द्वारा नजरअंदाज कर दिया है" ग्रहण द्वारा चेतावनी समाप्त करने के लिए?

हालांकि ग्रहण lifecycle-mapping प्लगइन अन्य परियोजनाओं पर मेरे लिए काम किया है, मैं वर्तमान में मेरे गुप्त ग्रहण के साथ एक इंटेलीजे की दुकान में काम कर रहा हूँ और मैं कुछ भी शामिल करने के लिए उनके पोम फ़ाइलों के सभी बदलकर अपने आप को बेनकाब करने के लिए नहीं करना चाहते हैं समूह org.eclipse.m2e से।

कुछ प्रयोगों के बाद, मैंने पाया है कि आप मेवेन वरीयताओं में लाइफसाइक्ल मैपिंग को बदलकर यह चेतावनी नहीं दिखा सकते हैं। स्पष्ट रूप से मैं 100% निश्चित नहीं हूं कि यह क्या कर रहा है लेकिन मैंने कोई दुष्प्रभाव नहीं देखा है ...

यहां जाएं: प्राथमिकताएं और दाएं; मेवेन और दाएं; लाइफसाइक्लिंग मैपिंग्स Open workspace lifecycle mappings metadata पर क्लिक करके जो पृष्ठभूमि में एक टैब में lifecycle-mapping-metadata.xml फ़ाइल खुल जाएगा। मुझे लगता है कि यह आपके कार्यक्षेत्र subdir के अंतर्गत निम्नलिखित फाइल करने के लिए cooresponds:

.metadata/.plugins/org.eclipse.m2e.core/lifecycle-mapping-metadata.xml 

अगला <pluginExecutions>...</pluginExecutions> के अंदर फाइल के नीचे करने के निम्नलिखित श्लोक जोड़ें।

<pluginExecution> 
    <pluginExecutionFilter> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-enforcer-plugin</artifactId> 
     <versionRange>[1.0.0,)</versionRange> 
     <goals> 
      <goal>enforce</goal> 
     </goals> 
    </pluginExecutionFilter> 
    <action> 
     <ignore /> 
    </action> 
</pluginExecution> 

एक बार एक्सएमएल फ़ाइल सहेजा जाता है आप वरीयताओं विंडो पर वापस जाने के लिए और Reload workspace lifecycle mappings metadata जो फ़ाइल किसी भी तरह संकलित प्रेस करने की आवश्यकता होगी। अंत में आपको चेतावनियों को दूर करने के लिए अपनी सभी परियोजनाओं पर एक मैवेन अपडेट-प्रोजेक्ट करने की आवश्यकता होगी।

उम्मीद है कि इससे मदद मिलती है।