Maven 3 peringatan tentang build.plugins.plugin.version

313

Karena saya memperbarui ke Maven 3 saya mendapatkan pesan peringatan berikut di setiap bangunan:

Bagaimana saya bisa menghilangkan peringatan ini?

[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.
Istao
sumber
1
Di Maven 3.5.3, ini sekarang merupakan kesalahan. Jangan abaikan peringatan! Terima kasih kepada @gavenkoa untuk jawaban tentang cara menemukan versi plugin.
jwm

Jawaban:

400

Tambahkan <version>elemen setelah <plugin> <artifactId>di pom.xmlfile Anda . Temukan teks berikut:

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

Tambahkan tag versi ke dalamnya:

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

Peringatan itu harus diselesaikan.

Mengenai hal ini:

'build.plugins.plugin.version' untuk org.apache.maven.plugins: maven-compiler-plugin tidak ada

Banyak orang telah menyebutkan mengapa masalah ini terjadi, tetapi gagal untuk menyarankan perbaikan. Yang perlu saya lakukan adalah masuk ke file POM saya untuk proyek saya, dan menambahkan <version>tag seperti yang ditunjukkan di atas.

Untuk menemukan nomor versi, salah satu caranya adalah dengan melihat output Maven setelah selesai berjalan. Di mana Anda kehilangan nomor versi, Maven akan menampilkan versi standarnya:

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

Ambil nomor versi itu (seperti di 2.3.2atas) dan tambahkan ke POM Anda, seperti yang ditunjukkan.

Todd
sumber
4
@ JBT tidak mengerti kenapa? build maven dimaksudkan untuk menjadi stabil, jadi versi apa yang akan digunakan harus didefinisikan secara eksplisit. Itu sebabnya pakar meminta itu. Seperti pesan yang mengatakan, "Sangat disarankan untuk memperbaiki masalah ini karena mereka mengancam stabilitas bangunan Anda."
eis
3
Ini agak aneh meskipun karena Anda hanya mendapatkan masalah ini jika Anda telah menambahkan entri untuk plugin ke file POM proyek. POM yang efektif memiliki elemen versi tetapi Anda masih perlu menambahkan elemen versi ke POM proyek untuk menghapus peringatan ini.
oenpelli
2
Saya mendapatkan peringatan yang sama dengan pertanyaan awal, tetapi pom.xml saya tidak memiliki referensi ke maven-compiler-plugin. Apa yang saya lewatkan? Terima kasih!
Vítor E. Silva Souza
3
Tidak bekerja untuk saya. Tag versi plugin sudah ada di sana.
Erran Morad
4
Apakah 2.3.2 versi terbaru? Bagaimana Anda bisa tahu yang mana? Atau tidak masalah?
Pocketkid2
84

Jalankan seperti:

  $ mvn bantuan: jelaskan -DartifactId = maven-war-plugin -DgroupId = org.apache.maven.plugins

untuk plug-in yang tidak memiliki versi. Anda mendapatkan output:

Nama: Plugin Maven WAR
Deskripsi: Membuat file Arsip Aplikasi Web (PERANG) dari proyek
  output dan ketergantungannya.
Id Grup: org.apache.maven.plugins
Id Artifact: maven-war-plugin
Versi: 2.2
Awalan Sasaran: perang

Gunakan versi yang ditampilkan dalam output.

PEMBARUAN Jika Anda ingin memilih di antara daftar versi, gunakan http://search.maven.org/ atau http://mvnrepository.com/ Perhatikan bahwa Java IDE favorit Anda harus memiliki dialog pencarian paket Maven . Cukup periksa dokumen.

SUPER UPDATE Saya juga menggunakan:

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

Baru-baru ini saya menemukan cara mendapatkan versi terbaru untuk plug-in (atau perpustakaan) sehingga tidak perlu lagi googling atau mengunjungi Maven Central :

$ mvn versions:display-dependency-updates
$ mvn versions:display-plugin-updates     # <-- THIS
gavenkoa
sumber
6
+1. Varian alternatif dan lebih ringkas:mvn help:describe -Dplugin=groupId:artifactId
informatik01
3
Memang ini tidak memberikan solusi tetapi konten yang berharga pula: bagaimana orang dapat menemukan versi yang digunakan / diharapkan. Mungkin ada baiknya menyebutkan menempatkan plugin-versi ini di parent-pom menggunakan pluginManagement-tag: stackoverflow.com/a/10483284/1023341
gkephorus
11

dapatkan informasi versi terbaru dari:

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

klik pada versi terbaru (atau yang ingin Anda gunakan) dan Anda akan melihat info ketergantungan (pada 2019-05 itu 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>

Anda mungkin ingin menggunakan tag versi dan komentar untuk tag plugin Anda.

<!-- 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>

jika suka, Anda dapat memodifikasi pom Anda untuk memiliki informasi versi di tag properti seperti yang dijabarkan dalam jawaban lain.

Wolfgang Fahl
sumber
10

Saya menggunakan pom induk untuk proyek saya dan ingin menentukan versi di satu tempat, jadi saya menggunakan properti untuk menentukan versi:

pom induk:

<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>

pom proyek:

<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>

Lihat juga: https://www.allthingsdigital.nl/2011/04/10/maven-3-and-the-versions-dilemma/

Patrick Koorevaar
sumber
1
Saya pikir mungkin lebih baik, atau setidaknya lebih alami, untuk menggunakan pluginManagement untuk versi plugins.
Jonathan Rosenne
Kecuali ketika Anda memiliki plugin Management overriding di POM anak.
Jonathan Rosenne
2

Ini jawaban yang bagus di sini. Dan saya ingin menambahkan 'Mengapa Tambahkan elemen di Maven3'.
Di Maven 3.x Catatan Kompatibilitas

Resolusi Metaversion Plugin
Secara internal, Maven 2.x menggunakan penanda versi khusus RELEASE dan TERBARU untuk mendukung resolusi versi plugin otomatis. Metafersi ini juga diakui dalam elemen deklarasi. Demi bangunan yang dapat direproduksi, Maven 3.x tidak lagi mendukung penggunaan metaversions ini di POM. Akibatnya, pengguna perlu mengganti kemunculan metaversi ini dengan versi konkret.

Dan saya juga temukan di maven-compiler-plugin - penggunaan

Catatan: Maven 3.0 akan mengeluarkan peringatan jika Anda tidak menentukan versi plugin.

ohahohah
sumber