멀티 모듈 메이븐 프로젝트에서 모듈 간 src / test 클래스 공유
멀티 모듈 Maven 프로젝트가 있습니다. 이 예제를 위해 두 개의 모듈을 고려하십시오.
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
아래 로 이동할 수 있다고 생각 했습니다 src/main
. 그런 다음 data-test
의 테스트 범위 종속성으로 포함 data
합니다. 불행히도, 이것은 순환 의존성을 일으킨다 : data
uses data-test
이지만 data-test
역시 필요하다 data
.
내가 생각해 낸 유일한 해결책 은 패키지 SampleDataHelper
아래 data src/main
에 배치 하고 test
실제 응용 프로그램 코드가 그것을 호출하지 않기를 희망하는 것입니다.
SampleDataHelper
수업을 하지 않고 모듈간에 수업을 공유하려면 어떻게 해야 src/main
합니까?
소비자 프로젝트는 데이터 프로젝트에 따라 다르므로 소비자보다 먼저 데이터를 작성해야합니다. 결과적으로 의견에 제안 된 기술을 사용 하여 데이터 프로젝트에 테스트 JAR을 생성하기 위해 POM을 공유하고 구성하려는 모든 테스트 코드가 포함되도록합니다.
<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>
소비자 프로젝트는 test-jar
물론 테스트 범위가 있는 일반 Data 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' 카테고리의 다른 글
cout은 동기화 / 스레드 안전합니까? (0) | 2020.08.06 |
---|---|
멀티 프로세싱의 공유 메모리 개체 (0) | 2020.08.06 |
JavaScript를위한 간단한 (비보안) 해시 함수? (0) | 2020.08.06 |
HtmlString과 MvcHtmlString (0) | 2020.08.06 |
몽구스 하위 문서와 중첩 스키마 (0) | 2020.08.06 |