Rumah  >  Artikel  >  Java  >  Bagaimana untuk mengelakkan kebergantungan bulat dalam projek Java

Bagaimana untuk mengelakkan kebergantungan bulat dalam projek Java

王林
王林ke hadapan
2023-05-04 15:55:061208semak imbas

Contohnya:

Bagaimana untuk mengelakkan kebergantungan bulat dalam projek Java

Dalam gambar, perpustakaan API kami mengimport beberapa perpustakaan, tetapi perpustakaan ini juga bergantung pada versi perpustakaan X yang berbeza, ini akan mengelakkan konflik pergantungan.

Bagaimana untuk menyelesaikan masalah ini

Sebelum terdapat alat pengurusan perpustakaan Maven & Gradle, apabila kami membangunkan projek Java, kami perlu menghabiskan banyak masa untuk menyelesaikan pergantungan konflik dalam projek kami. Pengenalan alat Maven & Gradle telah banyak menyelesaikan masalah pergantungan kami, tetapi banyak kali kami masih akan melihat masalah seperti: ClassNotFoundException, MethodNotSupportedException, NoClassDefNotFound Dalam banyak kes, kami bergantung pada pengalaman pembangun untuk menyelesaikannya secara manual. Pada masa yang sama, kami juga boleh bergantung pada Beberapa alatan pembangunan membantu kami menyelesaikan masalah, seperti:

Penganalisis Ketergantungan dalam alatan pembangunan Eclipse/IntelliJ

Ia boleh memaparkan semua kebergantungan dan membantu pembangun mencari pustaka yang bercanggah.

Bagaimana untuk mengelakkan kebergantungan bulat dalam projek Java

Apabila anda mengesan perpustakaan yang mengandungi kebergantungan yang menyebabkan masalah, ia perlu dikecualikan daripada fail pengurusan kebergantungan kami (pom.xml atau build.gradle) Semua perpustakaan dengan versi kebergantungan yang berbeza.

pemalam maven-enforcer-plugin

Maven menyediakan pemalam Maven-Enforcer-Plugin untuk mengesahkan pematuhan dengan kontrak (atau mengesahkan persekitaran pembangunan) . Contohnya, versi JDK, versi Maven, persekitaran pembangunan (Linux, Windows, dll.), versi pakej balang bergantung, dsb.

Untuk menggunakan pemalam, anda hanya perlu memperkenalkannya dalam pom:

<plugin>     <groupid>org.apache.maven.plugins</groupid>     <artifactid>maven-enforcer-plugin</artifactid>     <version>1.3.1</version>     <executions>         <execution>             <id>enforce</id>             <configuration>                 <rules>                     <dependencyconvergence></dependencyconvergence>                 </rules>             </configuration>             <goals>                 <goal>enforce</goal>             </goals>         </execution>     </executions> </plugin>

dalam Apabila melaksanakan pakej bersih mvn, versi balang yang bercanggah dan pom induknya akan dicetak dalam konsol, seperti berikut:

[INFO] --- maven-enforcer-plugin:1.3.1:enforce (enforce) @ uaf-uafei-provider --- [WARNING]  Dependency convergence error for com.google.guava:guava:16.0 paths to dependency are: +-com.uaf.uafei:uaf-uafei-provider:0.2.09-SNAPSHOT   +-com.uaf:microservice-sleuth:0.2.09-SNAPSHOT     +-org.springframework.cloud:spring-cloud-starter-openfeign:2.1.5.RELEASE       +-io.github.openfeign:feign-hystrix:10.4.0         +-com.netflix.archaius:archaius-core:0.7.6           +-com.google.guava:guava:16.0 and +-com.uaf.uafei:uaf-uafei-provider:0.2.09-SNAPSHOT   +-com.uaf:microservice-apollo:0.2.09-SNAPSHOT     +-com.google.inject:guice:4.1.0       +-com.google.guava:guava:19.0  [WARNING] Rule 0: org.apache.maven.plugins.enforcer.DependencyConvergence failed with message: Failed while enforcing releasability the error(s) are [ Dependency convergence error for com.google.guava:guava:16.0 paths to dependency are: +-com.uaf.uafei:uaf-uafei-provider:0.2.09-SNAPSHOT   +-com.uaf:microservice-sleuth:0.2.09-SNAPSHOT     +-org.springframework.cloud:spring-cloud-starter-openfeign:2.1.5.RELEASE       +-io.github.openfeign:feign-hystrix:10.4.0         +-com.netflix.archaius:archaius-core:0.7.6           +-com.google.guava:guava:16.0 and +-com.uaf.uafei:uaf-uafei-provider:0.2.09-SNAPSHOT   +-com.uaf:microservice-apollo:0.2.09-SNAPSHOT     +-com.google.inject:guice:4.1.0       +-com.google.guava:guava:19.0 ]

Atas ialah kandungan terperinci Bagaimana untuk mengelakkan kebergantungan bulat dalam projek Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam