Maven'in pom.xml dosyasında pluginManagement nedir?


266

Bu pom dosyamın bir parçacığı.

....
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.4</version>                        
                <executions>
                    <execution>
                        <phase>install</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            ......
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
...

Komut ile başarılı bir şekilde kullanıyorum

mvn install

Ancak, "pluginManagement" etiketine koymaya maven-dependency-pluginçalıştığımda, installhedefi başlattığımda çalışmayı durdurur . "PluginManagement" etiketi neden oluşturma davranışını değiştirir? Yoksa başka bir hedef veya seçenek mi kullanmalıyım?

Yanıtlar:


299

Hala eklemelisin

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
    </plugin>
</plugins>

çünkü pluginManagementtüm proje modüllerinizde aynı eklenti yapılandırmasını paylaşmanın bir yolu.

Maven belgelerinden:

pluginManagement : yan eklentiler boyunca görülen bir öğedir. Eklenti Yönetimi, eklenti öğelerini aynı şekilde içerir, ancak bu belirli proje derlemesi için eklenti bilgilerini yapılandırmak yerine, bu öğeden devralınan proje derlemelerini yapılandırmak amaçlanmıştır. Ancak, bu yalnızca alt öğedeki eklentiler öğesinde gerçekten başvurulan eklentileri yapılandırır. Çocuklar pluginManagement tanımlarını geçersiz kılma hakkına sahiptir.


266

Arasındaki fark <pluginManagement/>ve <plugins/>bir o <plugin/>altında:

  • <pluginManagement/>derlemenizdeki modüller tarafından devralınacak eklentilerin ayarlarını tanımlar. Bu, bir üst pom dosyanız olduğu durumlar için mükemmeldir.

  • <plugins/>eklentinin gerçek bir çağrılmasıdır. Bu, a <pluginManagement/>.

<pluginManagement/>Bir üst POM değilse, projenizde bir tane olması gerekmez . Bununla birlikte, eğer bir ebeveyn pom ise, çocuğun pom'unda, aşağıdaki gibi bir beyanınız olması gerekir:

<plugins>
    <plugin>
        <groupId>com.foo</groupId>
        <artifactId>bar-plugin</artifactId>
    </plugin>
</plugins>

Herhangi bir yapılandırmayı nasıl tanımladığınıza dikkat edin. Çağrınızı alt projenin ihtiyaçlarına göre daha fazla ayarlamanız gerekmedikçe, üst öğeden devralınabilirsiniz.

Daha spesifik bilgi için şunları kontrol edebilirsiniz:


Cevabın için teşekkürler. Ben M2E Eclipse IDE eklentisi küçük bir hata atlamak gerekir, çünkü aynı pom dosyada pluginManagement ve eklenti etiketi (maven-bağımlılık-eklentisi için) karıştırmak gerekiyor. Bkz. Stackoverflow.com/questions/8706017/…
Andrea Borgogelli Avveduti

7
Teşekkürler! :) Bu aynıdır <dependency/>ve <dependencyManagement/>. (İsterseniz, onların sürümleri ve kapsamları ile birlikte) Sen de bağımlılıkları tanımlayan <dependencyManagement/>bölümü ve ardından <dependencies/>bölümünde sadece tanımlamak groupIdve artifactId.
carlspring

1
bir eklentiyi iki kez yürütmem gerekirse, pluginmanagement kullanmalı mıyım?
Kalpesh Soni

@KalpeshSoni: Değişir - yeniden tanımlamak istemediğiniz iki yürütme arasında ortak yapılandırmaya sahip olmak isteyebilirsiniz.
carlspring

39

Sen kullanmak pluginManagementbir de parent pomher halükarda yapılandırmak için child pomkullanmak istiyor, ama her çocuk eklentisi bunu kullanmak istiyor. Bir örnek super pom, maven Javadoc eklentisi için bazı seçenekleri tanımlamanız olabilir .

Her biri child pomJavadoc kullanmak istemeyebilir, bu nedenle bir pluginManagementbölümde bu varsayılanları tanımlarsınız . Javadoc eklentisini kullanmak isteyen çocuk pom, sadece bir eklenti bölümü tanımlar ve yapılandırmayı içindeki tanımdan devralır .pluginManagementparent pom


Teşekkür ederim. Eclipse için M2E eklentisinin küçük bir hata atlamak gerekiyor çünkü sadece aynı pom dosyada pluginManagement ve eklenti etiketleri karıştırmak için arıyorum. Bkz. Stackoverflow.com/questions/8706017/…
Andrea Borgogelli Avveduti

3

pluginManagement: yan eklentiler boyunca görülen bir öğedir. Eklenti Yönetimi, eklenti öğelerini aynı şekilde içerir, ancak bu belirli proje derlemesi için eklenti bilgilerini yapılandırmak yerine, bu öğeden devralınan proje derlemelerini yapılandırmak amaçlanmıştır. Ancak, bu yalnızca alt öğedeki eklentiler öğesinde gerçekten başvurulan eklentileri yapılandırır. Çocuklar pluginManagement tanımlarını geçersiz kılma hakkına sahiptir.

Gönderen http://maven.apache.org/pom.html#Plugin%5FManagement

Kopyalandığı yer:

Maven2 - eklenti sorunuYönetim ve ebeveyn-çocuk ilişkisi

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.