>  기사  >  Java  >  Java 프로젝트에서 순환 종속성을 피하는 방법

Java 프로젝트에서 순환 종속성을 피하는 방법

王林
王林앞으로
2023-05-04 15:55:061276검색

예:

Java 프로젝트에서 순환 종속성을 피하는 방법

그림에서 API 라이브러리는 일부 라이브러리를 가져오지만 이러한 라이브러리도 다른 버전의 라이브러리 X에 의존하므로 종속성 충돌이 발생할 수 있습니다.

이 문제를 해결하는 방법

Maven 및 Gradle 라이브러리 관리 도구가 있기 전에는 Java 프로젝트를 개발했는데 프로젝트의 종속성 충돌을 해결하는 데 많은 시간이 걸렸습니다. Maven 및 Gradle 도구가 도입되었습니다. 문제를 해결했지만 ClassNotFoundException, MethodNotSupportedException, NoClassDefNotFound와 같은 문제가 계속 표시되는 경우가 많습니다. 많은 경우 개발자의 경험에 의존하여 수동으로 해결할 수도 있습니다. 문제 해결에 도움이 되는 개발 도구:

Eclipse/IntelliJ 개발 도구의 종속성 분석기

모든 종속성을 표시하고 개발자가 충돌하는 라이브러리를 찾는 데 도움을 줄 수 있습니다.

Java 프로젝트에서 순환 종속성을 피하는 방법

어떤 라이브러리에 문제를 일으키는 종속성이 포함되어 있는지 감지하면 종속성 관리 파일(pom.xml 또는 build.gradle)에서 다양한 버전의 종속성을 포함하는 모든 라이브러리를 제외해야 합니다.

maven-enforcer-plugin

Maven은 계약 준수 확인(또는 개발 환경 확인)을 위해 Maven-Enforcer-Plugin 플러그인을 제공합니다. 예를 들어 JDK 버전, Maven 버전, 개발 환경(Linux, Windows 등), 종속 jar 패키지 버전 등 플러그인을 사용하려면 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>

mvn을 할 때 패키지를 정리하면 다음과 같이 충돌하는 jar 버전과 상위 pom을 콘솔에 인쇄합니다.

[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 ]

위 내용은 Java 프로젝트에서 순환 종속성을 피하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제