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

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

王林
王林nach vorne
2023-05-04 15:55:061208Durchsuche

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>

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 ]

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen