2013-05-14 15 views
20

Projelerimde yürütmek istediğim 2 yaygın eklenti tabanlı görevim var. Ortak oldukları için, yapılandırmaları paylaşılan bir ana POM'in pluginMangement bölümüne taşımak istiyorum. Bununla birlikte, her iki görev de, tamamen farklı olsa da, aynı eklentiyi kullanır. Bazı projelerimde sadece 2 görevden birini yapmak istiyorum (her zaman eklentinin tüm yürütmelerini çalıştırmak istemiyorum).PluginManagement'da birden çok eklenti gerçekleştirebilir ve onlardan çocuk POM'umdan seçim yapabilir miyim?

Bir üst pompanın pluginManagement bölümündeki bir eklentinin birden çok farklı yürütülmesini belirtmenin bir yolu var mı, ve aslında yürütmek üzere bu uygulamaların bir pompamı (ve yalnızca bir tanesini) seçmem mümkün mü? pluginManagement içinde 2 yürütme yapılandırırsam, her iki yürütme de çalışır gibi görünüyor. Not: Sanırım bu, Maven2 - problem with pluginManagement and parent-child relationship numaralı sorunun bir kopyası olabilir veya olmayabilir, ancak soru yaklaşık 4 ekran uzunluğunda olduğu için (TL; DR), kısa bir yineleme yararlı olabilir.

cevap

32

Varsayılan olarak, Maven yapılandırdığınız tüm yürütmeleri içerecektir. İşte bu durumu daha önce nasıl ele aldım.

Not infaz none faz bağlanmıştır. Çocuğun olarak, böyle yürütmek gerektiğini parçaları sağlar: çocuk açıkça faza yürütme bağlamaz

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>some-maven-plugin</artifactId> 
    <executions> 
     <execution> 
     <id>first-execution</id>   <!-- be sure to use ID from parent --> 
     <phase>prepare-package</phase> <!-- whatever phase is desired --> 
     </execution> 
     <!-- enable other executions here - or don't --> 
    </executions> 
</plugin> 

, bu yayınlanmaz. Bu, istediğiniz yürütmeleri seçmenizi ve seçmenizi sağlar.

+0

Yapabileceğim zaman bunu denemeye gidiyorum, ancak bunun, "none" olarak ayarlanmış bir faza sahip olmayan ebeveynin başka yürütmeleri de çalıştırıp çalıştırmayacağını biliyor musunuz? – bacar

+0

"İlk çalıştırma" seçeneğine bağlı olarak, "kaynak-kaynak" aşamasına ve "ikinci yürütme" ye "yok" u bağlamanız gerekiyorsa, bu eklentiyi çocuğa başvurunuz, "ilk çalıştırma" her zaman çalışır. Tanımladığım açık faz bağlaması ile "ikinci yürütme" yi el ile etkinleştirmeniz gerekir. -X ile Maven çalıştırın eklenti yürütmeleri ve sipariş göstermelidir (özellikle Maven 3 kullanıyorsanız, onun günlük formatını tercih ediyorum). – user944849

+0

Tamam; manuel olarak "ikinci yürütme" yi belirtmeme rağmen, "ilk çalıştırma" her zaman çalışacaktır (eğer 'hiç' bağlı değilse); Başka bir deyişle, ebeveynsinde tanımlanan bir yürütmeyi bastırma yönteminin hiçbir yolu yoktur; fazı hiçbiri 'yok' (ve çocuğa yeniden anlamlı bir değere geri getirmek için tüm ekstra ayrıntılı XML'leri ekleyerek). Yine de, bu en az boilerplate ile gördüğüm en iyi çözüm gibi görünüyor - teşekkürler! – bacar