Maven에서 사용되지 않거나 선언되지 않은 종속성은 무엇입니까? 그들과 무엇을해야합니까?
Maven dependency:analyze
이 내 프로젝트의 종속성에 대해 불평합니다. 사용되지 않는 것과 선언되지 않은 것을 어떻게 결정합니까? 어떻게해야합니까?
예:
$ mvn dependency:analyze
...
[WARNING] Used undeclared dependencies found:
[WARNING] org.slf4j:slf4j-api:jar:1.5.0:provided
[WARNING] commons-logging:commons-logging:jar:1.1.1:compile
[WARNING] commons-dbutils:commons-dbutils:jar:1.1-osgi:provided
[WARNING] org.codehaus.jackson:jackson-core-asl:jar:1.6.1:compile
...
[WARNING] Unused declared dependencies found:
[WARNING] commons-cli:commons-cli:jar:1.0:compile
[WARNING] org.mortbay.jetty:servlet-api:jar:2.5-20081211:test
[WARNING] org.apache.httpcomponents:httpclient:jar:4.0-alpha4:compile
[WARNING] commons-collections:commons-collections:jar:3.2:provided
[WARNING] javax.mail:mail:jar:1.4:provided
참고 : 이러한 종속성은 내 런타임 컨테이너에서 많이 사용되며 클래스 경로에 동일한 라이브러리가 다른 버전으로 두 번 사용되는 것을 방지하기 위해 제공된 것으로 선언했습니다.
Maven이 이것을 어떻게 결정하는지 확실하지 않습니다. 보고 된 모든 항목을 다룰 필요는 없지만이 정보는 적절하게 사용할 수 있습니다.
사용 된 선언되지 않은 종속성 은 필수이지만 프로젝트에서 종속성으로 명시 적으로 선언되지 않은 종속성입니다. 그러나 프로젝트에서 다른 종속성의 전 이적 종속성 덕분에 사용할 수 있습니다. 이러한 종속성을 명시 적으로 선언하는 것이 좋습니다. 또한 이러한 종속성의 버전을 제어 할 수 있습니다 (아마도 런타임에서 제공하는 버전과 일치).
에 관해서는 사용되지 않는 선언 의존성 , 그것을 제거하는 좋은 아이디어이다. 프로젝트에 불필요한 종속성을 추가하는 이유는 무엇입니까? 그러나 전이성은 어쨌든 런타임 버전과 충돌을 일으킬 수 있습니다. 이 경우 기본적으로 version
.
그건 그렇고, 프로젝트 mvn dependency:tree
의 종속성 트리 를 제공하여 각 종속성이 프로젝트에 어떻게 적용되는지에 대한 더 나은 관점을 제공합니다.
대답 :
"사용되지 않는 것과 선언되지 않은 것을 어떻게 결정합니까?"
Maven은 원시 바이트 코드를 분석 하는 Object WebASM 프레임 워크를 사용합니다 . 모든 클래스를 살펴본 다음 이러한 참조가 참조하는 모든 클래스의 목록을 작성합니다. 그것이 방법입니다.
해야 할 일에 관해서는, 실제로 사용하지 않았다는 확신이 들지 않는 한 "사용되지 않고 선언 된 종속성"을 제거하지 않는 것이 좋습니다.
'Program Tip' 카테고리의 다른 글
NUnit으로 데이터베이스 관련 코드를 어떻게 테스트합니까? (0) | 2020.11.28 |
---|---|
Bittorrent 프로토콜 구현 (0) | 2020.11.28 |
전역 규칙 유효성 검사를 DDD에 넣을 위치 (0) | 2020.11.28 |
확장의 선언은 Swift 4의 오류를 무시할 수 없습니다. (0) | 2020.11.28 |
Ruby에서 전체 파일을 읽는 방법은 무엇입니까? (0) | 2020.11.27 |