다중 모듈 maven 프로젝트에서 모듈 간에 src/테스트 클래스 공유
나는 다중 모듈 메이븐 프로젝트를 가지고 있다.이 예를 위해 두 가지 모듈을 고려하십시오.
data
consumer
모듈consumer
에 모듈이 있음data
의존으로
모듈data
다수의 핵심 계층을 선언하다아래에는 테스트가 있다.src/test
그것들을 사용하는 것.이 테스트들은 장문의 물체 생성을 필요로 하기 때문에 나는 이 물체들을 만들기 위한 몇 가지 효용 방법이 있는 클래스를 가지고 있다.이 유틸리티 클래스(SampleDataHelper
)은 에 있다.src/test
위계질서의
나는 또한 몇 가지 시험이 있다.consumer
이 장문 물체들 중 일부를 만들어야 하는 모듈.나는 내 것을 사용하고 싶다.SampleDataHelper
등급(에 정의됨)data src/test
)은(는) 내 테스트에 있음consumer src/test
도도도 도 비록data
의 consumer
consumer
아래 있는 클래스를 볼 수 없음data src/test
.
이에 맞서기 위해 또 다른 모듈을 만들지도 모른다는 생각이 들었다.data-test
() 및 이동SampleDataHelper
그 밑에그러면 나는 다음을 포함시킬 것이다.data-test
테스트 범위 의존성으로서data
불행히도, 이것은 순환 종속성을 도입한다.data
사용하다data-test
그렇지만data-test
또한 필요하다.data
.
내가 생각해 낸 유일한 해결책은 자리를 잡는 것이다.SampleDataHelper
밑에data src/main
의 밑에test
패키지 및 실제 애플리케이션 코드가 이 코드를 호출하지 않기를 바란다.
어떻게 하면 내 마음을 나눌 수 있을까?SampleDataHelper
하단에 넣지 않고 모듈 사이를 등급으로 나누다.src/main
?
당신의 소비자 프로젝트는 당신의 데이터 프로젝트에 달려있다. 그러므로 우리는 데이터가 소비자보다 먼저 작성되어야 한다는 것에 기쁘다.따라서 코멘트에 제시된 기법을 사용하여 데이터 프로젝트에 공유하려는 모든 테스트 코드가 포함되어 있는지 확인하고 POM을 구성하여 테스트 JAR을 생성하십시오.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
그러면 일반 데이터 JAR 아티팩트와 추가 데이터 모두에 따라 소비자 프로젝트가 결정됨test-jar
물론 테스트 범위가 포함된 아티팩트:
<dependency>
<groupId>com.foo</groupId>
<artifactId>data</artifactId>
<version>1.0</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
나는 이 방법을 여러 번 사용해 보았는데 효과가 좋다.
그래서 문제는 앞으로 (일부) 시험이 있다는 것이다.data
모듈은 에 의존한다.SampleDataHelper
너 수표 수 ? 너는 교실을 옮길 수 있다.SampleDataHelper
로 분류하다.src/main
data-test
모듈, 동시에 (특정 클래스에 따라 다름) 테스트를 (으)로 이동시키는 경우src/test
data-test
모 더 따라서 더 이상 순환 종속성이 없을 것이다.
'Programing' 카테고리의 다른 글
vuex 커밋이 저장되지 않음 (0) | 2022.05.09 |
---|---|
JFrame을 프로그래밍 방식으로 닫는 방법 (0) | 2022.05.09 |
Determine which JAR file a class is from (0) | 2022.05.09 |
VueJS는 프로덕션 모드에서 빌드된 경우에도 "개발 모드" 메시지를 표시함 (0) | 2022.05.09 |
충돌 @Dragenter @Dragleave / v-show 이벤트가 계속 빠르게 발생함 (0) | 2022.05.09 |