Eklenti yürütme, yaşam döngüsü yapılandırması kapsamında değildir (JBossas 7 EAR arketipi)


123

Maven M2E Plugin 1.0.100 ile Eclipse 3.7 Indigo kullanıyorum.

JBoss 7.x JavaEE 6 EAR arketipini kullanarak, EAR için pom bana şu hatayı veriyor:

Eklenti yürütme, yaşam döngüsü yapılandırması kapsamında değildir: org.apache.maven.plugins: maven-ear-plugin: 2.6: generate-application-xml (yürütme: default-generate-application-xml, phase: generate-resources)

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-ear-plugin</artifactId>
   <version>2.6</version>
   <configuration>
      <!-- Tell Maven we are using Java EE 6 -->
      <version>6</version>
      <!-- Use Java EE ear libraries as needed. Java EE ear libraries 
                  are in easy way to package any libraries needed in the ear, and automatically 
                  have any modules (EJB-JARs and WARs) use them -->
      <defaultLibBundleDir>lib</defaultLibBundleDir>
      <modules></modules>
   </configuration>
<plugin>

Yanıtlar:


138

Bu, bir süre önce tanıtılan M2E eklentisinin bir "özelliğidir". Doğrudan JBoss EAR eklentisiyle ilgili değildir, aynı zamanda diğer Maven eklentilerinin çoğunda da olur.

Sizin içinde tanımlanmış bir eklenti yürütmeniz varsa pom(yürütme gibi maven-ear-plugin:generate-application-xml), M2E için derleme Eclipse'de çalıştırıldığında ne yapacağını söyleyen ek yapılandırma bilgileri de eklemeniz gerekir, örneğin eklenti yürütmesi göz ardı edilirse veya yürütülürse M2E, artımlı derlemeler için de yapılmalı mı, ... Bu bilgi eksikse, M2E bu hata mesajını göstererek bundan şikayet eder:

"Eklenti yürütme, yaşam döngüsü yapılandırması kapsamında değildir"

Daha ayrıntılı bir açıklama ve bu hatanın ortadan kalkması için pom'a eklenmesi gereken bazı örnek yapılandırmalar için buraya bakın:

https://www.eclipse.org/m2e/documentation/m2e-execution-not-covered.html


70
@ Jan Kavramı anlamıyorum. M2E, kullanıcıya şeffaf olmalıdır. Maven komut satırının yaptığını, ancak tutulmanın içinden yapın. M2E'ye ne yapacağını söyleyecek pom yapılandırma verilerinde olmamalıdır. Varsa, kötü bir tasarımdır. BTW, bu hatalar bazen Eclipse ve M2E'nin yeni sürümlerinde gider.
mest

8
Rapt'e katılıyorum POM'umun m2e'ye bağımlılığı yok ve şimdi IDE'm olarak Eclipse kullanıyorum diye bir tane eklemek istiyorum. Bu, IntelliJ gibi başka bir IDE kullanıyor olabilecek aynı proje üzerinde çalışan diğer kişiler için bir impost. M2e bu ipuçlarına ihtiyaç duyuyorsa, Eclipse içindeki m2e yapılandırmasının bir parçası olmalıdır.
William

12
Eclipse'teyken bazı hedefler mantıklı değil. Örneğin, ZIP dosyalarının targetklasöre açıldığı projelerim var . Her kaynak dosya kaydedildikten sonra bunun "aşamalı olarak" yeniden yapılmasını istemezsiniz. Ya da belki bunu istiyorsun. Gerçekten, m2e'nin özel yapınız hakkında hiçbir fikri yoktur. M2e'nin Eclipse, POM'da ne yapması gerektiğini depolayabilir veya inşa adımını işlemek için m2e'ye daha fazla bilgi ekleyen bir m2e konektörü kurabilirsiniz. Görmeniz gereken seçenekler bunlar. POM m2'nizi bilinçli hale getirmek istemediğinizi anlıyorum, ancak burası tüm geliştiricileriniz için merkezi olarak yapılandırmak için güzel bir yer.
Sander Verhagen

3
Sorun şu ki, Maven veya Eclipse'deki çoğu belge gibi bunun için bağlantılı belgeler. abcacadabra'dır. Ne kadar net bir şekilde açıklamaya çalışırlarsa çalışsınlar, açıklama, nispeten yeni bir Maven kullanıcısı olarak anlamadığım ve nasıl bakacağımı bilmediğim çok fazla kavrama dayanıyor - bulduğum her şey aynı soruna sahip: çok fazla açıklanamayan kavramlar. Teknoloji çok karmaşık veya dokümantasyon çok kötü organize edilmiş. Her durumda, öğrenme eğrisi yüksektir. Buradaki cevaplar büyük bir netlik katıyor.
reinierpost

10
@RicardoGladwell Olumsuz oyların amacını yanlış anladınız. Ok "bu cevabın yararlı olmadığını" söylüyor - ve bu, bu cevabın doğru değil. Bu nedenle, bu cevabın yazıldığı tondan hoşlanmasanız bile, olumsuz oy gereksizdi.
Dawood ibn Kareem

43

neyse çok geç ama benim çözümüm Eclipse'de hata mesajına basitçe sağ tıklayıp Hızlı Düzeltme >> Bu tür hatalara sahip her pom için Yoksay'ı seçmekti


3
Çok geç değil. Sorunu bu şekilde çözdüm!
reinierpost

2
Ben de. Tüm bu araştırmalar ve sorunun ne olduğunu anlamaya çalışmak başımı ağrıttı, ben de görmezden geldim :) Teşekkürler.
dleerob

1
Bu benim için çalıştı. @ Jan'ın eclipse.org/m2e/documentation/m2e-execution-not-covered.html'ye işaret eden cevabında açıklananları otomatik olarak oluşturduğundan şüpheleniyorum çünkü hızlı düzeltmeyi kabul ettikten sonra gördüğüm tek değişiklik pomumdaki bir değişiklikti. xml.
Michael Osofsky

Başka bir makinede tekrar denedim ve JBehave 3.9.4'ten 3.9.5'e yükselttiğimde sorun ortadan kalktı, çünkü benim durumumda hatayı oluşturan JBehave eklentisi (Eklenti yapılandırmasını bir JBehave Maven arketipinden oluşturmuştum ( jbehave.org/reference/stable/archetypes.html ))
Michael Osofsky

30

Eclipse, artımlı yapılar konseptine sahiptir. Bu, çok fazla zaman kazandırdığı için inanılmaz derecede yararlıdır.

Bu Nasıl Yararlı?

Az önce tek bir .java dosyasını değiştirdiğinizi varsayalım. Artımlı kurucular, her şeyi yeniden derlemek zorunda kalmadan kodu derleyebilecekler (bu daha fazla zaman alacaktır).

Şimdi Maven Eklentilerindeki sorun nedir

Maven eklentilerinin çoğu artımlı yapılar için tasarlanmamıştır ve bu nedenle m2e için sorun yaratır. m2e, eklenti hedefinin çok önemli mi yoksa alakasız mı olduğunu bilmez. Tek bir dosya değiştiğinde her eklentiyi çalıştırırsa, çok zaman alacaktır.

M2e'nin yürütmenin nasıl ele alınması gerektiğini anlamak için meta veri bilgilerine güvenmesinin nedeni budur. m2e, bu üst veri bilgisini sağlamak için farklı seçenekler geliştirmiştir ve tercih sırası aşağıdaki gibidir (en yüksekten en düşüğe)

  1. projenin pom.xml dosyası
  2. ebeveyn, büyük ebeveyn ve benzeri pom.xml dosyaları
  3. [m2e 1.2+] çalışma alanı tercihleri
  4. kurulu m2e uzantıları
  5. maven eklentisi tarafından sağlanan [m2e 1.1+] yaşam döngüsü eşleme meta verileri
  6. m2e ile gönderilen varsayılan yaşam döngüsü haritalama meta verileri

1,2, pom dosyanızın veya üst öğelerinden herhangi birinin etiketinde pluginManagement bölümünü belirtmeyi ifade eder. M2E, projeyi yapılandırmak için bu yapılandırmayı okur . Snippet'in altında m2e'ye yuicompressor-maven-eklentisinin jslintve compresshedeflerini yok sayması talimatını verir.

<pluginManagement>
        <plugins>
            <!--This plugin's configuration is used to store Eclipse m2e settings 
                only. It has no influence on the Maven build itself. -->
            <plugin>
                <groupId>org.eclipse.m2e</groupId>
                <artifactId>lifecycle-mapping</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <lifecycleMappingMetadata>
                        <pluginExecutions>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>net.alchim31.maven</groupId>
                                    <artifactId>yuicompressor-maven-plugin</artifactId>
                                    <versionRange>[1.0,)</versionRange>
                                    <goals>
                                        <goal>compress</goal>
                                        <goal>jslint</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore />
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>

3) Pom dosyanızı bu meta verilerle kirletmeyi tercih etmiyorsanız, bunu harici bir XML dosyasında saklayabilirsiniz (seçenek 3). Aşağıda m2e'ye yuicompressor-maven-eklentisinin jslintve compresshedeflerini göz ardı etmesini söyleyen örnek bir eşleme dosyası bulunmaktadır.

<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
    <pluginExecutions>
        <pluginExecution>
            <pluginExecutionFilter>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>yuicompressor-maven-plugin</artifactId>
                <versionRange>[1.0,)</versionRange>
                <goals>
                    <goal>compress</goal>
                    <goal>jslint</goal>
                </goals>
            </pluginExecutionFilter>
            <action>
                <ignore/>
            </action>
        </pluginExecution>
    </pluginExecutions>
</lifecycleMappingMetadata>

4) Bu 3 seçenekten hiçbirini beğenmezseniz, maven eklentisi için bir m2e konektörü (uzantısı) kullanabilirsiniz. Konektör, meta verileri m2e'ye sağlayacaktır. Bu bağlantıda bir bağlayıcı içindeki meta veri bilgilerinin bir örneğini görebilirsiniz . Meta verilerin bir yapılandırıcıya atıfta bulunduğunu fark etmiş olabilirsiniz. Bu basitçe, m2e'nin sorumluluğu uzantı yazarı tarafından sağlanan belirli java sınıfına devredeceği anlamına gelir. Yapılandırıcı, projeyi yapılandırabilir (örneğin, ek kaynak klasörleri eklemek vb.) Ve artımlı bir derleme sırasında gerçek maven eklentisinin çalıştırılıp çalıştırılmayacağına karar verebilir (eğer Yapılandırıcı içinde düzgün şekilde yönetilmezse, sonsuz proje oluşumlarına yol açabilir)

Yapılandırıcı (bir örnek için bu bağlantıları bakınız link1 , bağlantı2 ). Dolayısıyla, eklentinin harici bir bağlayıcıyla yönetilebilen bir şey olması durumunda, onu kurabilirsiniz. m2e, diğer geliştiriciler tarafından sağlanan bu tür bağlayıcıların bir listesini tutar. Bu, keşif kataloğu olarak bilinir. m2e, seçeneklerden herhangi biri (1-6) aracılığıyla yürütme için yaşam döngüsü eşleme meta verisine sahip değilseniz ve keşif kataloğunun yürütmeyi yönetebilecek bir uzantı varsa, bir bağlayıcı kurmanızı ister.

Aşağıdaki görüntü, m2e'nin sizden build-helper-maven-eklentisi için bağlayıcıyı kurmanızı nasıl istediğini gösterir. keşif kataloğundan önerilen bağlayıcıyı yükle.

5) M2E yazarlar var eklentisi, kullanıcıların herhangi bir ek yaşam döngüsü eşleştirmeleri veya connectors.Some kullanmak zorunda olmayacak anlamına gelir maven-eklentisi düzenli, kendini içinde artan yapı ve tedarik yaşam döngüsü eşleme desteklemek için eklenti yazarları teşvik zaten bu uygulamaya

6) Varsayılan olarak m2e, maven-compiler-eklentisi ve diğerleri gibi yaygın olarak kullanılan eklentilerin çoğu için yaşam döngüsü eşleme meta verilerini tutar.

Şimdi soruya geri dönelim: Muhtemelen sizin için sorun yaratan belirli hedef için 1, 2 veya 3'te göz ardı edilen bir yaşam döngüsü haritası sunabilirsiniz.


14

Proje yanlış pozitif hata işaretçisi devralmadan m2e'nin daha iyi yapılandırılabileceğini hatırlatmak için iyi bir çözüm, bu hataları yalnızca uyarılara indirgemektir:

Pencere -> Tercihler -> Maven -> Hatalar / Uyarılar -> Eklenti yürütme yaşam döngüsü yapılandırması kapsamında değildir = Uyarı


12

Temizlemeden hemen sonra, yani temizlemeden sonra belirli bir tıkama yapmaya çalıştım (varsayılan temiz aşama). Bu benim için tutulma indigo ile çalıştı. Sadece post-clean eklendi, sorunu benim için çözdü.

<executions>
  <execution>
    <configuration>
    </configuration>
   <phase>post-clean</phase>
    <goals>
      <goal>update-widgetset</goal>
    </goals>
  </execution>
</executions> 

11
Bunun neden işe yaradığını açıklayabilir misin ? "Yeni eklendi" ve "benim için çözüldü", istenmeyen gizli davranışlara sahip olmamasına olan güvenimi gerçekten artırmıyor.
Kissaki

Yeterince elimde, bana verilen pom.xml için bir phaseve a var ve hala hatayı alıyorum. goalexecution
reinierpost

Beyler - özür dilerim. Ben maven uzmanı değilim, hızlı bir çözüm arayan birine yardım etmek istedim. Yine de daha fazla bilgi vermeliyim. Bence buradaki püf noktası, yürütme aşamasının dahil edilmesi. Mojo, yürütme aşamaları ile tanımlayabildiğinden, temizlemeden hemen sonra, yani temizlemeden sonra belirli bir tıkama gerçekleştirmeye çalıştım (varsayılan temiz aşama). Bu benim için tutulma indigo ile çalıştı. Muhtemelen belirli bir eklenti, ana pom'dan bazı bağımlılıkları kullanmış olabilir? IIRC bu Vaadin tabanlı eklentiydi.
Charith De Silva

2

Eclipse Kepler 4.3'te maven-antrun-plugin ve jaxb2-maven-plugin ile aynı sorunu şu çözümü uygulayarak çözebildim: http://wiki.eclipse.org/M2E_plugin_execution_not_covered#Eclipse_4.2_add_default_mapping
Yani% içeriğimin içeriği elipse_workspace_name% /. metadata / .plugins / org.eclipse.m2e.core / lifecycle-mapping-metadata.xml aşağıdaki gibidir:

<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
  <pluginExecutions>
    <pluginExecution>
      <pluginExecutionFilter>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <versionRange>1.3</versionRange>
        <goals>
          <goal>run</goal>
        </goals>
      </pluginExecutionFilter>
      <action>
        <ignore />
      </action>
    </pluginExecution>
    <pluginExecution>
      <pluginExecutionFilter>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jaxb2-maven-plugin</artifactId>
        <versionRange>1.2</versionRange>
        <goals>
          <goal>xjc</goal>
        </goals>
      </pluginExecutionFilter>
      <action>
        <ignore />
      </action>
    </pluginExecution>
  </pluginExecutions>
</lifecycleMappingMetadata>

* Hataların gittiğini görmek için Eclipse'i yeniden başlatmak zorunda kaldı.


1

İtibariyle Maven Eclipse (M2E) sürüm 0.12 tüm Maven yaşam döngüsü hedefleri kurulu M2E uzantısı eşleme gerekir. Bu durumda, maven-ear-plugineşlenmemiş bir hedefi vardı default-generate-application-xml.

Haritalanmamış yaşam döngüsü hedeflerini buradaki talimatları uygulayarak hariç tutabilirsiniz:

https://wiki.eclipse.org/M2E_plugin_execution_not_covered

Alternatif olarak, Eclipse'de hata mesajına sağ tıklayın ve Quick Fix-> öğesini seçin Ignore for every pom with such errors.

Yaşam döngüsü hedeflerini görmezden gelirken dikkatli olmalısınız: tipik olarak hedefler yararlı bir şey yapar ve bunları Eclipse'de yok sayılacak şekilde yapılandırırsanız, önemli oluşturma adımlarını kaçırabilirsiniz. Eşleştirilmemiş yaşam döngüsü hedefi için Maven Eclipse EAR uzantısına destek eklemeyi de düşünebilirsiniz.


0

Jan cevabında açıklanan mekanizma ile m2e eklentisine "create-application-xml" hedefini göz ardı etmesini söyledim. Bu, hatayı ortadan kaldırır ve m2e application.xml dosyasını oluşturduğu için işe yarıyor gibi görünür.

Dolayısıyla, temelde hata bizi, Maven derlemesi m2e eklentisinin kontrolü altında Eclipse içinde çalıştığında application.xml oluşturmak için hangi mekanizmanın sorumlu olduğuna karar vermeye zorladı. Ve sorumlu m2e'ye karar verdik.

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ear-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <version>6</version>
                <defaultLibBundleDir>lib</defaultLibBundleDir>
            </configuration>
        </plugin>
    </plugins>
    <pluginManagement>
        <plugins>
            **<!-- This plugin's configuration is used to store Eclipse m2e settings 
                only. It has no influence on the Maven build itself. -->
            <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-ear-plugin</artifactId>
                                    <versionRange>[2.1,)</versionRange>
                                    <goals>
                                        <goal>generate-application-xml</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore></ignore>
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>**
        </plugins>
    </pluginManagement>
</build>

0

M2E_plugin_execution_not_covered içindeki içeriği anlamanız ve aşağıda belirtilen adımları izlemeniz gerekir:

  • Eclipse eklenti klasöründen org.eclipse.m2e.lifecyclemapping.defaults kavanozunu seçin
  • Çıkartın ve tüm eklenti Yürütmelerini bulabileceğiniz yaşam döngüsü-mapping-metadata.xml dosyasını açın.
  • Eklentilerinizin <ignore/>altında <action>etiketlerle hata olarak gösterilen eklenti Yürütmelerini ekleyin .

örneğin: yazma-proje-özellikleri hatası için, bu pasajı <pluginExecutions>yaşam döngüsü-mapping-metadata.xml dosyasının bölümünün altına ekleyin :

 <pluginExecution>
    <pluginExecutionFilter>
       <groupId>org.codehaus.mojo</groupId>
       <artifactId>properties-maven-plugin</artifactId>
       <versionRange>1.0-alpha-2</versionRange>
       <goals>
         <goal>write-project-properties</goal>
       </goals>
    </pluginExecutionFilter>
     <action>
       <ignore />
     </action>
   </pluginExecution>
  • JAR'daki XML dosyasını değiştirin
  • Eclipse'in eklenti klasöründeki güncellenmiş JAR'ı değiştirin
  • Eclipse'i yeniden başlatın

Gelecekte herhangi bir proje için hata görmemelisiniz.


0

Soru çok eski olsa da benim için işe yarayan çözümü paylaşmak istiyorum çünkü bu hataya gelince zaten her şeyi kontrol ettim. Bu bir acıydı, denemek için iki gün geçirdim ve sonunda çözüm şuydu:

tutulmada M2e eklentisini güncelleyin

temizle ve tekrar inşa et

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.