2012-01-02 17 views
148

द्वारा समर्थित नहीं है मैं एक काफी सरल Maven परियोजना है:Maven-निर्भरता-प्लगइन (लक्ष्यों "कॉपी-निर्भरता", "खोल") m2e

<project> 
    <dependencies> 
     ... 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-dependency-plugin</artifactId> 
       <version>2.4</version> 
       <executions> 
        <execution> 
         <id>copy-dependencies</id> 
         <phase>package</phase> 
         <goals> 
          <goal>copy-dependencies</goal> 
         </goals> 
         <configuration> 
          <outputDirectory>${project.build.directory}/dependencies</outputDirectory> 
         </configuration>  
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

हालांकि, मैं m2eclipse में निम्न त्रुटि मिलती है:

Description Resource Path Location Type 
maven-dependency-plugin (goals "copy-dependencies", "unpack") is not supported by m2e. pom.xml /jasperreports-test line 60 Maven Project Build Lifecycle Mapping Problem 

मुझे क्यों लगता है कि m2eclipse इस कार्य को "समर्थन" नहीं देता है? मेवेन करता है, और यह सब मुझे वास्तव में परवाह है। मैं इस परियोजना को अपने प्रोजेक्ट में जाने के लिए कैसे प्राप्त कर सकता हूं?

+4

इन दिनों m2e अपने pom.xml करने के लिए उपयुक्त विन्यास जोड़ने के लिए m2e असमर्थित लक्ष्य की अनदेखी करने के लिए एक QuickFix प्रदान करता है। –

+0

@ ThorbjørnRavnAndersen, त्वरित समाधान क्या है? –

+1

@ मुहम्मद गेलबाना ग्रहण में "त्वरित सुधार" का अर्थ है: कर्सर को समस्या पर रखें; Ctrl-1 दबाएं; त्वरित फिक्स चुनें। –

उत्तर

158

ऐसा एक ज्ञात मुद्दा प्रतीत होता है। आप इसे अनदेखा करने के लिए m2e को निर्देश दे सकते हैं।

विकल्प 1: pom.xml

अपने <build/> टैग के अंदर निम्नलिखित जोड़ें:

<pluginManagement> 
<plugins> 
    <!-- Ignore/Execute plugin execution --> 
    <plugin> 
     <groupId>org.eclipse.m2e</groupId> 
     <artifactId>lifecycle-mapping</artifactId> 
     <version>1.0.0</version> 
     <configuration> 
      <lifecycleMappingMetadata> 
       <pluginExecutions> 
        <!-- copy-dependency plugin --> 
        <pluginExecution> 
         <pluginExecutionFilter> 
          <groupId>org.apache.maven.plugins</groupId> 
          <artifactId>maven-dependency-plugin</artifactId> 
          <versionRange>[1.0.0,)</versionRange> 
          <goals> 
           <goal>copy-dependencies</goal> 
          </goals> 
         </pluginExecutionFilter> 
         <action> 
          <ignore /> 
         </action> 
        </pluginExecution> 
       </pluginExecutions> 
      </lifecycleMappingMetadata> 
     </configuration> 
    </plugin> 
    </plugins></pluginManagement> 

आप Maven ... करने की आवश्यकता होगी - इस के बाद> अद्यतन परियोजना विन्यास अपनी परियोजना पर ।

और अधिक पढ़ें: http://wiki.eclipse.org/M2E_plugin_execution_not_covered#m2e_maven_plugin_coverage_status

विकल्प 2: वैश्विक ग्रहण ओवरराइड

अपने पोम फ़ाइल में बदलाव से बचने के लिए की अनदेखी ओवरराइड ग्रहण सेटिंग के माध्यम से पूरे कार्यक्षेत्र के लिए लागू किया जा सकता है।

सहेजें इस फाइल कहीं डिस्क पर: https://gist.github.com/maksimov/8906462

इस फ़ाइल की Eclipse/Preferences/Maven/Lifecycle Mappings ब्राउज़ में और ठीक क्लिक करें:

Eclipse Settings

+7

क्या होगा यदि प्रति-निर्भरता आपकी WAR फ़ाइल बनाने में एक महत्वपूर्ण कदम है? मैं monstrosity कॉल m2Eclipse के साथ काम कर रहा हूं और यहां तक ​​कि निष्पादित करने के लिए कार्रवाई को बदलने के बावजूद, महत्वपूर्ण फ़ाइलों को लक्षित फ़ोल्डर में कॉपी नहीं किया गया है ... – PhoneTech

+1

स्वत: जेनरेट की गई अनदेखी सेटिंग्स के लिए, @PhoneTech, m2e टिप्पणी जोड़ता है * "यह प्लगइन कॉन्फ़िगरेशन केवल ग्रहण m2e सेटिंग्स को स्टोर करने के लिए उपयोग किया जाता है। इसका मावेन पर खुद का कोई प्रभाव नहीं पड़ता है। "* सुनिश्चित नहीं है कि इसका मतलब क्या है, जैसा कि आप कह रहे हैं कि चीजें आपके लिए कॉपी नहीं की जाती हैं। – Arjan

+6

हां, इससे मदद मिली ... लेकिन चेतावनी से छुटकारा पाने के लिए यह बहुत भयानक कोड है: पी – dokaspar

38

कॉपी-निर्भरता, खोल, पैक, आदि, महत्वपूर्ण हैं आपकी परियोजना के लिए आपको इसे अनदेखा नहीं करना चाहिए। आपको में ग्रहण इंडिगो एसआर 1, मैवेन 2.2.1

+4

धन्यवाद, यह ग्रहण इंडिगो एसआर 2 – stemm

+1

में भी मदद करता है मैं थोड़ा खो गया हूं ... क्या इसका मतलब ऊपर दिए गए कोड का उपयोग करना है, लेकिन ''' '' के बजाय '? धन्यवाद! – xverges

+2

जूनो पर भी काम करता है। –

57

के साथ परीक्षण किया गया है यह ग्रहण M2E plugin execution not covered के लिए एम 2 ई की समस्या है।

इस समस्या को हल करने के लिए, आपको बस जीवन चक्र को मैप करना है जो इसे पहचानने और एम 2 ई को निष्पादित करने के निर्देश नहीं देता है।

आपको build के अंदर, अपने plugins के बाद इसे जोड़ना चाहिए। यह त्रुटि को हटा देगा और एम 2 ई को copy-depenciesmaven-dependency-plugin के लक्ष्य को पहचान देगा और पीओएम को अपेक्षित रूप से काम करेगा, प्रतिलिपि बनाने पर हर बार फ़ोल्डर को निर्भर करता है। अगर आप केवल त्रुटि को अनदेखा करना चाहते हैं, तो आप को <ignore /> के लिए बदल दें। आपके सुझाव के अनुसार maven-dependency-pluginpluginManagement में संलग्न करने की आवश्यकता नहीं है।

<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-dependency-plugin</artifactId> 
       <versionRange>[2.0,)</versionRange> 
       <goals> 
        <goal>copy-dependencies</goal> 
       </goals> 
       </pluginExecutionFilter> 
       <action> 
       <execute /> 
       </action> 
      </pluginExecution> 
      </pluginExecutions> 
     </lifecycleMappingMetadata> 
     </configuration> 
    </plugin> 
    </plugins> 
</pluginManagement> 
+4

यह वास्तव में हल करता है। और मैं बेवकूफ था, सोच रहा था कि जब लोग '' को '<प्लगइन प्रबंधन> 'में ले जाने के बारे में बात कर रहे थे, तो वास्तव में' org.apache.maven.plugins मेवेन-निर्भरता-प्लगइन 'वहां पर जाना चाहिए। लेकिन यह ' org.eclipse.m2e लाइफसाइक्ल-मैपिंग 'है जो' <प्लगइन प्रबंधन> 'में संलग्न होना आवश्यक है। ग्रहण में त्वरित फिक्स का उपयोग करते समय, * नियमित * 'से ऊपर * जोड़ा गया है, और ऐसा लगता है कि स्थान भी ठीक काम करता है। कुंजी को ' 'को' ' में बदलने के लिए है। अच्छा लगा। – Arjan

+1

मिला मुझे आपके द्वारा प्रदान किए गए लिंक पर अनुशंसित किए गए निष्पादन के भीतर false आवश्यक है। उत्तर के लिए धन्यवाद मुझे सही रास्ते पर सेट करें। –

+0

'बिल्ड' के अंदर अपने 'प्लगइन्स' के बाद इसे जोड़ने की कोई आवश्यकता नहीं है, आप इसे पहले जोड़ सकते हैं। –

0

मैं जानता हूँ कि इस पुरानी पोस्ट है, लेकिन मैं भी इस समस्या के साथ आज संघर्ष किया है और मैं इस पेज से टेम्पलेट का उपयोग किया: http://maven.apache.org/plugins/maven-dependency-plugin/usage.html

<project> 
    [...] 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-dependency-plugin</artifactId> 
     <version>2.7</version> 
     <executions> 
      <execution> 
      <id>copy</id> 
      <phase>package</phase> 
      <goals> 
       <goal>copy</goal> 
      </goals> 
      <configuration> 
       <artifactItems> 
       <artifactItem> 
        <groupId>[ groupId ]</groupId> 
        <artifactId>[ artifactId ]</artifactId> 
        <version>[ version ]</version> 
        <type>[ packaging ]</type> 
        <classifier> [classifier - optional] </classifier> 
        <overWrite>[ true or false ]</overWrite> 
        <outputDirectory>[ output directory ]</outputDirectory> 
        <destFileName>[ filename ]</destFileName> 
       </artifactItem> 
       </artifactItems> 
       <!-- other configurations here --> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
    [...] 
</project> 

और सब कुछ m2e 1.3.1 के तहत ठीक काम करता है।

जब मैं का उपयोग करने के

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.4</version> 
      <executions> 
       <execution> 
        <id>copy-dependencies</id> 
        <phase>package</phase> 
        <goals> 
         <goal>copy-dependencies</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${project.build.directory}/dependencies</outputDirectory> 
        </configuration>  
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

मैं भी m2e त्रुटि मिली की कोशिश की।

+0

हां, यह वास्तव में इस प्रविष्टि का उद्देश्य है: m2e को अब ग्रहण निर्माण जीवन चक्र में प्लगइन निष्पादन को मैप करने के लिए _connectors_ की आवश्यकता है।
यहां तक ​​कि मेरी टिप्पणी लेखन के समय, एम 2 केवल कुछ ऐसे कनेक्टरों का समर्थन करता है: आपको m2e को एक असमर्थित प्लगइन से निपटने के तरीके को निर्देशित करने के लिए 'जीवन चक्र-मानचित्रण' मेवेन प्लगइन का उपयोग करना होगा (यहां 'मेवेन-निर्भरता- प्लगइन') –

7

उपरोक्त CaioToOn से उत्तर के बावजूद, मुझे अभी भी शुरुआत में काम करने में समस्याएं थीं।

कई प्रयासों के बाद, अंत में यह काम कर रहा है। मैं अपने अंतिम संस्करण को यहां चिपका रहा हूं - उम्मीद है कि इससे किसी और को फायदा होगा।

<build> 
     <plugins> 
      <!-- 
      Copy all Maven Dependencies (-MD) into libMD/ folder to use in classpath via shellscript 
      --> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-dependency-plugin</artifactId> 
       <version>2.8</version> 
       <executions> 
        <execution> 
         <id>copy</id> 
         <phase>package</phase> 
         <goals> 
          <goal>copy-dependencies</goal> 
         </goals> 
         <configuration> 
          <outputDirectory>${project.build.directory}/libMD</outputDirectory> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
     <!-- 
     Above maven-dependepcy-plugin gives a validation error in m2e. 
     To fix that, add the plugin management step below. Per: http://stackoverflow.com/a/12109018 
     --> 
     <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-dependency-plugin</artifactId> 
             <versionRange>[2.0,)</versionRange> 
             <goals> 
              <goal>copy-dependencies</goal> 
             </goals> 
            </pluginExecutionFilter> 
            <action> 
             <execute /> 
            </action> 
           </pluginExecution> 
          </pluginExecutions> 
         </lifecycleMappingMetadata> 
        </configuration> 
       </plugin> 
      </plugins> 
     </pluginManagement> 
    </build> 
+0

क्या आप ग्रहण में निष्पादित करने के लक्ष्य को प्रदान कर सकते हैं? सही उत्तर के लिए – Jess

1

ग्रहण में हडोप परियोजना को लोड करने का प्रयास करते समय मुझे भी यही समस्या थी। मैंने ऊपर दिए गए समाधानों की कोशिश की, और मुझे विश्वास है कि यह ग्रहण केप्लर में काम कर सकता है ... अब भी सुनिश्चित नहीं है (बहुत सी चीजों की कोशिश की)।

मेरी सभी समस्याओं के साथ, मैंने ग्रहण लुना में जाने का फैसला किया, और ऊपर दिए गए समाधान मेरे लिए काम नहीं करते थे।

एक और पोस्ट था जिसमें पैकेज को टैग बदलने की सिफारिश की गई थी। मैंने ऐसा करना शुरू कर दिया, और यह त्रुटियों को "साफ़" कर देगा ... हालांकि, मुझे लगता है कि परिवर्तन मुझे बाद में काट देगा - मैं मेवेन पर एक विशेषज्ञ नहीं हूं।

सौभाग्य से, मुझे पता चला कि सभी त्रुटियों को कैसे हटाया जाए। विंडो पर जाएं-> प्राथमिकताएं-> मेवेन-> त्रुटि/चेतावनी और "अनदेखा" करने के लिए "जीवन चक्र द्वारा कवर नहीं किया गया प्लगइन निष्पादन" बदलें। आशा करता हूँ की ये काम करेगा।

0

एक और विकल्प समस्या टैब पर नेविगेट करना है, त्रुटि पर राइट क्लिक करें, त्वरित फिक्स लागू करें पर क्लिक करें। अनदेखा एक्सएमएल कोड उत्पन्न करना चाहिए और इसे आपके लिए .pom फ़ाइल लागू करना चाहिए।

13

यह काम करते हैं, बजाय यह अनदेखी के बनाने के लिए, आप Maven-निर्भरता-प्लगइन के लिए m2e कनेक्टर स्थापित कर सकते हैं:
https://github.com/ianbrandt/m2e-maven-dependency-plugin

यहाँ कैसे आप ग्रहण में ऐसा होता है:

  1. खिड़की के पास जाओ/प्राथमिकताएं/Maven/डिस्कवरी/
  2. दर्ज सूचि यूआरएल: http://download.eclipse.org/technology/m2e/discovery/directory-1.4.xml
  3. क्लिक ओपन सूची
  4. m2e-Maven-निर्भरता-प्लगइन चुनें
  5. का आनंद
+1

+1। प्लगइन स्थापित करने के बाद बस 'pom.xml' फ़ाइल में एक छोटा सा संपादन करें याद रखें, अन्यथा त्रुटि दूर नहीं जा सकती है। –

+0

ईक्लीप्स लुना में कैटलॉग यूआरएल http://download.eclipse.org/technology/m2e/discovery/directory-1.5.xml – lazlev

+0

मैंने कोशिश की लेकिन कैटलॉग यूआरएल फ़ील्ड संपादन योग्य नहीं है! मेरा सेट है: अंत में http://download.eclipse.org/technology/m2e/discovery/directory.xml (यानी -1.4 के बिना)। कोई विचार, कैसे/जहां कोई इसे समायोजित कर सकता है? – mmo

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