maven- निर्भरता-प्लगइन (लक्ष्य "कॉपी-निर्भरता", "अनपैक") m2e द्वारा समर्थित नहीं है


155

मेरे पास एक बहुत ही सरल मावेन परियोजना है:

<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 असमर्थित लक्ष्य की अनदेखी करने के लिए m2e बनाने के लिए अपने pom.xml में उपयुक्त कॉन्फ़िगरेशन जोड़ने के लिए एक क्विकफ़िक्स प्रदान करता है।
Thorbjørn Ravn Andersen

@ ThorbjørnRavnAndersen, क्या है जल्दी ठीक?
मुहम्मद गालबाना

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

जवाबों:


164

यह एक ज्ञात मुद्दा लगता है। आप इसे अनदेखा करने के लिए 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: ग्लोबल एक्लिप्स ओवरराइड

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

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

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

ग्रहण की सेटिंग्स


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

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

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

यह अभी भी मुझे चेतावनी देता है, लेकिन त्रुटि दूर हो गई है।
स्टीवेक्रॉस

57

यह M2E की एक समस्या है जिसके लिए E M2se प्लग इन एक्जीक्यूशन कवर नहीं किया गया है

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

आपको इसे अपने pluginsअंदर, के बाद जोड़ना चाहिए build। यह त्रुटि को हटाने और M2E लक्ष्य को पहचान कर देगा copy-depenciesकी maven-dependency-pluginऔर अपेक्षा के अनुरूप काम करने के पोम, निर्भरता को कॉपी हर बार ग्रहण का निर्माण यह फ़ोल्डर में। यदि आप बस त्रुटि को अनदेखा करना चाहते हैं, तो आप के लिए बदल जाते <execute />हैं <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
यह वास्तव में इसे हल करता है। और मैं बेवकूफ किया जा रहा था, यह सोच कर जब लोग जाने के बारे में बात कर रहे थे <plugins>में <pluginManagement>एक वास्तव में बढ़ना चाहिए <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId>वहाँ में। लेकिन यह इस बारे में है <groupId>org.eclipse.m2e</groupId> <artifactId>lifecycle-mapping</artifactId>कि इसमें संलग्न होने की आवश्यकता है <pluginManagement>। ग्रहण में त्वरित फिक्स उपयोग करते समय, एक ही जोड़ा जाता है ऊपर नियमित रूप से <plugins>, और इसे उस स्थान भी ठीक काम करता है लगता है। कुंजी तो में बदलने के लिए <ignore>है <execute>। अच्छा लगा।
अर्जन

1
पाया मुझे जरूरत है <runOnIncremental> false </ runOnIncremental> दिए गए लिंक पर सिफारिश के अनुसार निष्पादित करें। जवाब के लिए धन्यवाद मुझे सही रास्ते पर सेट करें।
साइबर-भिक्षु

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

38

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


4
धन्यवाद, यह ग्रहण इंडिगो SR2 में भी मदद करता है
स्टेम

1
मैं थोड़ा खो गया हूँ ... क्या इसका मतलब उपरोक्त कोड का उपयोग करना है लेकिन <execute />इसके बजाय <ignore />? धन्यवाद!
xverges

1
थोड़ा और समझाने की परवाह है? बस एक डाल <plugin>में <pluginManagement>है लेकिन अभी भी यह अपना काम करने में संदर्भित, अब भी मुझे एक ही चेतावनी देता है।
अर्जन

@CaioToOn, शायद आपको कुछ और पता हो ...? इसे जोड़ने के बाद <pluginManagement>मुझे अभी भी "नियमित" 2 लाइन जोड़ने की आवश्यकता है <build><plugins><plugin>..., एक को कॉन्फ़िगर किया गया है <pluginManagement>, ठीक है? (फिर भी जूनो को उसी चीज के बारे में शिकायत करते हुए, जब में <pluginManagement>।)
अर्जन

@ अर्जन आपको अपना pluginsटैग संलग्न करना चाहिए pluginManagement। लेकिन नीचे दिए गए उत्तर पर एक नज़र डालें, stackoverflow.com/a/12109018/179138 । सुझाए गए निष्पादन को अनदेखा करता है, लेकिन ग्रहण पर प्लगइन निष्पादित नहीं करता है।
Caio Cunha

16

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

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

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

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

ग्रहण लूना में कैटलॉग URL download.eclipse.org/technology/m2e/discovery/directory-1.5.xml
jansohn

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

8

ऊपर 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>

क्या आप ग्रहण में निष्पादित करने के लिए लक्ष्य प्रदान कर सकते हैं?
जेस

1

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

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

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

सौभाग्य से, मुझे पता चला कि सभी त्रुटियों को कैसे हटाया जाए। Window-> Preferences-> Maven-> Error / Warnings में जाएं और "Plugin निष्पादन को जीवनचक्र द्वारा कवर नहीं ..." विकल्प को "इग्नोर" करें। आशा करता हूँ की ये काम करेगा।


0

मुझे पता है कि यह पुरानी पोस्ट है, लेकिन मैं आज भी इस समस्या से जूझ रहा हूं और मैंने इस पृष्ठ से टेम्पलेट का उपयोग किया है: http://maven.apache.org/plugins/maven-d 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>

और सब कुछ ठीक काम करता है m2e1.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त्रुटि मिली ।


हां, इस प्रविष्टि का वास्तव में यही उद्देश्य है: एम 2 को अब कनेक्टर्स को एक्लिप्स बिल्ड लाइफसाइकल में प्लग इन निष्पादित करने की आवश्यकता है । <br/> मेरे टिप्पणी लेखन के समय भी, m2e केवल कुछ ही ऐसे कनेक्टरों का समर्थन करता है: आपको lifecycle-mappingm2e को एक असमर्थित प्लगइन (यहाँ maven-dependency-plugin) से निपटने के लिए निर्देश देने के लिए Maven प्लगइन का उपयोग करना होगा
Olivier B.

0

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.