Cara memeriksa konflik perpustakaan di Maven
Tanggal Publikasi:20 Januari 2021.
INFOMARTION > Cara memeriksa konflik perpustakaan di Maven
Ikhtisar.
Cara memeriksa konflik perpustakaan di Maven. Maven secara otomatis menyelesaikan dependensi pustaka jar, tetapi konfigurasi default tidak memberi tahu Anda tentang konflik. Ini adalah cara memeriksa konflik perpustakaan di Maven dalam kasus seperti itu.
Daftar Isi
1. Ketika konflik perpustakaan terjadi di Maven
Maven secara otomatis menyelesaikan ketergantungan perpustakaan Java. Resolusi ketergantungan otomatis berarti bahwa jika Anda memiliki file Jar yang Anda butuhkan, secara otomatis akan mendapatkan Jar yang dibutuhkan untuk menjalankan Jar tersebut. Untuk informasi lebih lanjut mengenai cara kerja resolusi ketergantungan pustaka tertentu, lihat artikel berikut ini.
Bagaimana Maven secara otomatis menyelesaikan dependensi pustaka jar.
Namun demikian, apabila terjadi konflik perpustakaan, konflik tersebut tidak diselesaikan secara otomatis. Terlebih lagi, jika Anda tidak memiliki pengaturan, Anda bahkan tidak dapat mendeteksi konflik. Kami ingin menjelaskan cara memeriksa konflik perpustakaan.
2. Bagaimana cara memeriksa
Ada dua cara utama untuk memeriksa konflik perpustakaan
- Memperkenalkan plug-in
- Konfirmasi pra-bangun dengan perintah.
'Install plug-in' adalah metode untuk menambahkan pengaturan ke pom.xml. 'Periksa dengan perintah sebelum membangun' secara harfiah berarti memeriksa secara manual dengan perintah sebelum membangun. Saya ingin menjelaskan cara melakukan ini secara spesifik.
2-1. Memperkenalkan plug-in
Situs web Maven berikut ini dapat membantu.
http://maven.apache.org/enforcer/enforcer-rules/dependencyConvergence.html
Tambahkan pengaturan berikut ke pom.xml.
<project>
...
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.0.0-M3</version>
<executions>
<execution>
<id>enforce</id>
<configuration>
<rules>
<dependencyConvergence/>
</rules>
</configuration>
<goals>
<goal>enforce</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
...
</project>
Jika pengaturan di atas dimasukkan, kesalahan berikut ini terjadi dan build gagal jika ada konflik pustaka pada waktu build.
[WARNING]
Dependency convergence error for org.apache.commons:commons-collections4:4.1 paths to dependency are:
+-com.example.todo:todo-web:1.0.0-SNAPSHOT
+-org.apache.poi:poi:3.17
+-org.apache.commons:commons-collections4:4.1
and
+-com.example.todo:todo-web:1.0.0-SNAPSHOT
+-org.apache.commons:commons-collections4:4.0
[WARNING] Rule 0: org.apache.maven.plugins.enforcer.DependencyConvergence failed with message:
Failed while enforcing releasability. See above detailed error message.
Jika build diterapkan tanpa plug-in, tidak ada kesalahan yang terjadi dan build berakhir secara normal. Jika Anda ingin mendeteksi konflik, pastikan untuk menyiapkan ini.
2-2. Konfirmasi pra-bangun dengan perintah.
Dependensi diperiksa oleh perintah-perintah berikut ini
mvn dependency:tree -Dverbose
dan 'omitted for conflict' ditampilkan jika ada konflik. Juga dimungkinkan untuk mempersempit output hanya ke area-area di mana terdapat konflik, seperti pada perintah berikut ini. ※'find' adalah perintah untuk Windows. Untuk Linux, ini adalah 'grep'.
mvn dependency:tree -Dverbose | find "omitted for conflict"
Konflik pustaka bisa diperiksa dengan melihat hasil dari perintah-perintah di atas.
3. ringkasan
Jika Anda ingin mendeteksi konflik pustaka secara andal, kami merekomendasikan 'Install plug-in'. Memperkenalkan plug-in memastikan bahwa setiap konflik akan diketahui, karena build akan gagal.
Terima kasih telah menonton sampai akhir.