Maven 종속성을 테스트 런타임 (테스트 컴파일 제외) 클래스 경로로만 사용하는 것으로 선언하는 가장 좋은 방법은 무엇입니까? 이 테스트 컴파일에 필요한 아니에요 (만 테스트 런타임 클래스 패스에테스트 런타임으로 Maven 종속성 선언
는 특히, 나는 전형적인 컴파일 범위 의존의 slf4j-api
(로깅 외관) 싶지만 slf4j-simple
(단위 테스트에 적합한 베어 구현을) 할). 나는이 일을 봤는데 :
[WARNING] Unused declared dependencies found:
[WARNING] org.slf4j:slf4j-simple:jar:1.7.7:test
나는 runtime
을 사용할 수 없습니다
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<scope>test</scope>
</dependency>
그러나, 이것의 단점은 dependency:analyze
보고서 slf4j-simple
가 컴파일에 필요한 아니에요 아마도 때문에, 미사용이다 왜냐하면 종속성을 전이 적으로 상속 받기를 원하지 않기 때문입니다 (예를 들어 하류 종속성이 대신 log4j 등을 사용할 수 있습니다). optional=true
으로 runtime
을 시도했지만 동일한 경고가 표시됩니다.
(나는 또한 종속성 플러그인 ignoreNonCompile
을 설정할 수 있습니다,하지만 다른 잠재적 인 문제를 숨겨 매우 둔기처럼 보인다.)
런타임시 기본 소스에 필요한 것은 무엇입니까? 'runtime' 범위 종속성에 대해 여전히 불평하지 않을까요? –
일반적으로 전 이적 종속성은 선언 할 필요가 없습니다. 선택적 종속성 (일반적으로 다른 프레임 워크를 사용할 수있는 로깅과 같음)의 경우 절차가 옳습니다. 어쩌면 스코프 테스트를 추가 할 수 있습니다. –
'런타임'종속성에 대해 (잘못하여, IMHO) 불평하기 때문에 범위만으로는 대답이 아닌 것처럼 보입니다. 내가 정말로 원하는 것은'test'와'runtime' (클래스 경로까지)의 교차 영역과 dependency plugin이 "unused"'runtime' 의존성에 대해 덜 바보처럼 행동하는 범위입니다. –