컴파일 및 테스트 목적으로 한 버전을 구성하고 런타임에 대해 동일한 라이브러리의 다른 버전을 구성하는 동일한 종속성을 두 번 추가해야합니다.
이상하게 들리고 틀렸지 만 회사의 다른 팀에서 동일한 라이브러리의 2 가지 버전을 받았으며 "테스트 목적"버전에는 "테스트"메서드에서만 사용되는 클래스가 포함되어 있습니다. '코어'의 일부이기 때문에 프로덕션 서버입니다. 따라서 이것은 테스트 및 컴파일 단계에 버전 라이브러리를 사용하고 서버에서만 다른 버전 라이브러리를 사용해야 함을 의미합니다. 사실 '제공된'범위로 '테스트'버전 만 설정하는 문제를 해결 했으므로 생성 된 전쟁에 포함되지 않고 웹 컨테이너의 lib 폴더에 '프로덕션'버전을 넣지 만 상사가 자동화하기를 원합니다 구성 !!!
불행히도 '런타임'또는 '컴파일'범위를 사용하여 두 번째 버전에 종속성을 추가하면 JUnit 실행 단계에서 "테스트"버전에만있는 클래스를 찾지 못합니다. Maven이 동일한 라이브러리를 인식하고 '컴파일'또는 '런타임'구성이 다른 라이브러리에서 승리 한 것 같습니다. 나는 또한 '테스트'범위로 "테스트"버전을 설정하려고 시도했지만 작동하지 않습니다 ... 실제로 "테스트"에 대해 '테스트'및 '제공된'범위를 사용하여 가능한 모든 조합을 시도했습니다. "프로덕션 하나.
어떠한 제안? 테스트 목적으로 만 다른 라이브러리를 요청하거나 라이브러리의 이름을 변경할 수 없으며 모든 것이 지속적 통합 시스템과 통합되어 자동화되어야하므로 성가시다 ...
<dependency>
<groupId>company.group.id</groupId>
<artifactId>project.id</artifactId>
<version>0.1.1.TEST</version>
<scope>provided</scope>
//<scope>test</scope>
</dependency>
<dependency>
<groupId>company.group.id</groupId>
<artifactId>project.id</artifactId>
<version>0.1.0.PROD</version>
<scope>compile</scope>
//<scope>runtime</scope>
</dependency>
감사
Peter Lawrey는이 링크 에서 말합니다 .
"Maven은 한 번에 둘 이상의 모듈 버전을 갖는 것이 합리적이지 않다고 가정합니다. 새 버전이 이전 버전을 대체한다고 가정합니다. 그렇지 않은 경우 동일한 모듈이 아닙니다. 새로운 모듈을 다른 이름으로 지정하고 임의의 모듈을 선택하지 않도록 다른 패키지가 있는지 확인하십시오.
일반적으로 Maven은 좋은 애플리케이션 디자인을 장려하고 의도적으로 나쁜 생각이라고 판단한 작업을 어렵게 만듭니다. "
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다