Build.plugins.plugin.version hakkında Maven 3 uyarıları


313

Maven 3'e güncellediğimden beri her derlemede aşağıdaki uyarı mesajlarını alıyorum:

Bu uyarılardan nasıl kurtulabilirim?

[INFO] Scanning for projects...
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for proj:id:jar:3.1
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-javadoc-plugin is missing. @ line 195, column 15
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 204, column 15
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-surefire-plugin is missing. @ line 227, column 15
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-jar-plugin is missing. @ line 215, column 15
[WARNING] 'reporting.plugins.plugin.version' for org.codehaus.mojo:jdepend-maven-plugin is missing. @ line 271, column 15
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.

1
Maven 3.5.3'te, bu artık bir hata. Uyarıları dikkate almayın! Eklenti sürümünü nasıl bulacağınız için @gavenkoa'ya teşekkürler.
jwm

Yanıtlar:


400

Dosyanıza içindeki <version>öğeden sonra bir öğe ekleyin . Aşağıdaki metni bulun:<plugin> <artifactId>pom.xml

<plugin>
  <artifactId>maven-compiler-plugin</artifactId>

Sürüm etiketini buna ekleyin:

<plugin>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>2.3.2</version>

Uyarı çözülmelidir.

Bununla ilgili olarak:

org.apache.maven.plugins için 'build.plugins.plugin.version': maven-compiler-plugin eksik

Birçok kişi sorunun neden olduğunu belirtti , ancak bir düzeltme öneremedi. Tek yapmam gereken, projem için POM dosyama gitmek ve <version>etiketi yukarıda gösterildiği gibi eklemekti .

Sürüm numarasını keşfetmek için bir yol Maven'in çalışmasını bitirdikten sonra çıktısına bakmaktır. Sürüm numaralarının eksik olduğu yerlerde, Maven varsayılan sürümünü görüntüler:

[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ entities ---

Bu sürüm numarasını alın ( 2.3.2yukarıdaki gibi) ve gösterildiği gibi POM'nize ekleyin.


4
@JBT neden anlamıyorum? maven yapılarının kararlı olması amaçlanmıştır, bu nedenle hangi sürümün kullanılacağı açıkça tanımlanmalıdır. Bu yüzden maven istiyor. Mesajın dediği gibi, "Bu sorunları düzeltmeniz önemle tavsiye edilir, çünkü yapınızın kararlılığını tehdit ederler."
eis

3
Eğer proje POM dosyasına eklenti için bir giriş eklediyseniz bu sorunu almak gibi olsa garip bir parçasıdır. Etkili POM'nin sürüm öğesi vardır, ancak yine de bu uyarıyı kaldırmak için proje POM'sine bir sürüm öğesi eklemeniz gerekir.
oenpelli

2
Orijinal soru ile aynı uyarıları alıyorum, ama pom.xml benim maven-compiler-plugin için herhangi bir referans yok. Neyi kaçırıyorum? Teşekkürler!
Vítor E. Silva Souza

3
Benim için çalışmadı. Eklenti sürüm etiketi zaten vardı.
Erran Morad

4
2.3.2 son sürümü mi? Hangisinin olduğunu nasıl anlarsınız? Yoksa önemli değil mi?
Pocketkid2

84

Şunun gibi çalıştır:

  $ mvn help: -DartifactId = maven-savaş-eklentisi -DgroupId = org.apache.maven.plugins

sürümü olmayan eklenti için. Çıktı alırsınız:

İsim: Maven WAR Eklentisi
Açıklama: Projeden bir Web Uygulaması Arşivi (WAR) dosyası oluşturur
  çıktı ve bağımlılıkları.
Grup Kimliği: org.apache.maven.plugins
Eser Kimliği: maven-war-eklentisi
Sürüm: 2.2
Hedef Öneki: savaş

Çıktıda gösterilen sürümü kullanın.

GÜNCELLEME Sürüm listesi arasında seçim yapmak istiyorsanız, http://search.maven.org/ veya http://mvnrepository.com/ adresini kullanın . Favori Java IDE'nizin Maven paketi arama iletişim kutusu olması gerektiğini unutmayın . Sadece dokümanları kontrol et.

SÜPER GÜNCELLEME Ayrıca kullanıyorum:

$ mvn dependency:tree
$ mvn dependency:list
$ mvn dependency:resolve
$ mvn dependency:resolve-plugins  # <-- THIS

Son zamanlarda eklenti (veya kütüphane) için en son sürümü nasıl alacağımı keşfediyorum, bu nedenle artık googling veya Maven Central'ı ziyaret etmeye gerek yok :

$ mvn versions:display-dependency-updates
$ mvn versions:display-plugin-updates     # <-- THIS

6
+1. Alternatif ve daha kompakt bir varyant:mvn help:describe -Dplugin=groupId:artifactId
informatik01

3
Aslında bu bir çözüm vermedi ama yine de değerli bir içerik: gerçekten kullanılan / beklenen sürümü nasıl bulabilir. Belki de eklentiyi kullanarak bu eklenti sürümünü bir ebeveyn pompasına yerleştirmekten bahsetmeye değer olurdu.Management etiketi: stackoverflow.com/a/10483284/1023341
gkephorus


11

en son sürüm bilgilerini şu adresten edinebilirsiniz:

https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-compiler-plugin

en son sürümü (veya kullanmak istediğiniz sürümü) tıklayın ve bağımlılık bilgilerini göreceksiniz (2019-05'ten itibaren 3.8.1):

<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-compiler-plugin -->
<dependency>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.8.1</version>
</dependency>

eklenti etiketiniz için sürüm etiketini ve yorumu kullanmak isteyebilirsiniz.

<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-compiler-plugin -->
<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
        <source />
        <target />
    </configuration>
</plugin>

İsterseniz pom'unuzu, başka bir yanıtta belirtildiği gibi özellikler etiketindeki sürüm bilgilerine sahip olacak şekilde değiştirebilirsiniz.


10

Projelerim için bir üst pom kullanıyorum ve sürümleri tek bir yerde belirtmek istedim, bu yüzden sürümü belirtmek için özellikleri kullandım:

ebeveyn pom:

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    ....
    <properties>
        <maven-compiler-plugin-version>2.3.2</maven-compiler-plugin-version>
    </properties>
    ....
</project>

proje pom:

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    ....
    <build>
        <finalName>helloworld</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven-compiler-plugin-version}</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

Ayrıca bakınız: https://www.allthingsdigital.nl/2011/04/10/maven-3-and-the-versions-dilemma/


1
Eklentilerin sürümleri için pluginManagement kullanmanın daha iyi veya en azından daha doğal olabileceğini düşünüyorum.
Jonathan Rosenne

Alt POM'da geçersiz kılma eklentisine sahip olmanız dışında.
Jonathan Rosenne

2

Burada harika bir cevap var. Ve eklemek istiyorum 'Neden Maven3'e bir eleman ekle'.
In Maven'ın 3.x Uyumluluk Notlar

Eklenti Metaversion Çözünürlüğü
Dahili olarak Maven 2.x, otomatik eklenti sürüm çözünürlüğünü desteklemek için RELEASE ve LATEST özel sürüm işaretleyicilerini kullandı. Bu metaversiyonlar da bir bildirge için öğede tanınmıştır. Tekrarlanabilir yapı uğruna, Maven 3.x artık bu meta sürümlerin POM'da kullanımını desteklemiyor. Sonuç olarak, kullanıcıların bu meta sürümlerin oluşumlarını somut bir sürümle değiştirmeleri gerekecektir.

Ayrıca maven-derleyici-eklentisinde de kullanıyorum - kullanım

Not: Maven 3.0, bir eklentinin sürümünü belirtmezseniz uyarı verir.


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.