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
  2. Bagaimana cara memeriksa
  3. ringkasan

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.

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.