Heim > Java > javaLernprogramm > So vermeiden Sie zirkuläre Abhängigkeiten in Java-Projekten

So vermeiden Sie zirkuläre Abhängigkeiten in Java-Projekten

王林
Freigeben: 2023-05-04 15:55:06
nach vorne
1347 Leute haben es durchsucht

Zum Beispiel:

So vermeiden Sie zirkuläre Abhängigkeiten in Java-Projekten

Im Bild importiert unsere API-Bibliothek einige Bibliotheken, aber diese Bibliotheken hängen auch von verschiedenen Versionen der Bibliothek X ab, sodass Abhängigkeitskonflikte auftreten können.

So lösen Sie dieses Problem

Bevor es Maven- und Gradle-Bibliotheksverwaltungstools gab, haben wir ein Java-Projekt entwickelt und es hat viel Zeit gedauert, die Abhängigkeitskonflikte unseres Projekts zu lösen Wir haben unser Problem gelöst, aber oft werden wir immer noch Dinge sehen wie: ClassNotFoundException, MethodNotSupportedException, NoClassDefNotFound. In vielen Fällen verlassen wir uns auf die Erfahrung der Entwickler, um es manuell zu lösen Entwicklungstools, die uns bei der Behebung von Problemen helfen, wie zum Beispiel:

Abhängigkeitsanalysator in Eclipse/IntelliJ-Entwicklungstools

Es kann alle Abhängigkeiten anzeigen und Entwickler beim Auffinden widersprüchlicher Bibliotheken unterstützen.

So vermeiden Sie zirkuläre Abhängigkeiten in Java-Projekten

Wenn Sie feststellen, welche Bibliotheken Abhängigkeiten enthalten, die Probleme verursachen, müssen Sie alle Bibliotheken, die unterschiedliche Versionen von Abhängigkeiten enthalten, aus unserer Abhängigkeitsverwaltungsdatei (pom.xml oder build.gradle) ausschließen.

maven-enforcer-plugin

Maven stellt das Maven-Enforcer-Plugin-Plugin zur Verfügung, um die Einhaltung der Vereinbarung (oder die Entwicklungsumgebung) zu überprüfen. Zum Beispiel JDK-Version, Maven-Version, Entwicklungsumgebung (Linux, Windows usw.), abhängige JAR-Paketversion usw. Um das Plug-In zu verwenden, müssen Sie es nur im POM einführen:

<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>
Nach dem Login kopieren

Beim Ausführen von mvn Wenn Sie das Paket bereinigen, wird die in Konflikt stehende JAR-Version und ihr übergeordnetes POM wie folgt in der Konsole ausgegeben:

[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 ]
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo vermeiden Sie zirkuläre Abhängigkeiten in Java-Projekten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage