다중 모듈 프로젝트의 Maven 테스트 종속성
maven을 사용하여 다중 모듈 프로젝트를 빌드합니다. 내 모듈 2는 컴파일 범위의 모듈 1 src와 테스트 범위의 모듈 1 테스트에 의존합니다.
모듈 2-
<dependency>
<groupId>blah</groupId>
<artifactId>MODULE1</artifactId>
<version>blah</version>
<classifier>tests</classifier>
<scope>test</scope>
</dependency>
이것은 잘 작동합니다. 내 모듈 3이 Module1 src에 의존하고 컴파일 타임에 테스트한다고 가정하십시오.
모듈 3-
<dependency>
<groupId>blah</groupId>
<artifactId>MODULE1</artifactId>
<version>blah</version>
<classifier>tests</classifier>
<scope>compile</scope>
</dependency>
을 실행 mvn clean install
하면 내 빌드가 모듈 3까지 실행되고 모듈 1 테스트 종속성을 해결할 수 없기 때문에 모듈 3에서 실패합니다. 그런 다음 mvn install
모듈 3 만 수행하고 돌아가서 mvn install
부모 pom에서 실행 하여 빌드합니다. 이 문제를 어떻게 해결할 수 있습니까?
무엇을 하려는지 의심 스럽지만 프로젝트 (module1)를 위해 만든 테스트를 다른 프로젝트에서 재사용하고 싶다고 가정하겠습니다. 첨부 된 테스트 사용에 대한 가이드 하단의 메모에 설명되어 있습니다 .
이 가이드의 이전 버전
<classifier>tests</classifier>
에서는<type>test-jar</type>
. 이것은 현재 일부 경우에 작동하지만 설치 전 라이프 사이클 단계가 호출되는 경우 테스트 JAR 모듈 및 소비자의 리액터 빌드 중에 제대로 작동하지 않습니다. 이러한 시나리오에서 Maven은 리액터 빌드의 출력이 아니라 로컬 / 원격 저장소에서 테스트 JAR을 확인합니다. 분명히 저장소의 JAR이 오래되었거나 완전히 누락되어 빌드 실패를 유발할 수 있습니다 (참조 : MNG-2045 ).
따라서 먼저 컴파일 된 테스트를 JAR로 패키징하고 일반적인 재사용을 위해 배포하려면 maven-jar-plugin
다음과 같이 구성합니다 .
<project>
<build>
<plugins>
<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>
</plugins>
</build>
</project>
그런 다음 평소와 같이 테스트 JAR 아티팩트를 설치 / 배포합니다 ( mvn install
또는 사용 mvn deploy
).
마지막으로 테스트 JAR을 사용하려면 지정된 유형의 종속성을 지정해야합니다 test-jar
.
<project>
...
<dependencies>
<dependency>
<groupId>com.myco.app</groupId>
<artifactId>foo</artifactId>
<version>1.0-SNAPSHOT</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
</dependencies>
...
</project>
Pascals 질문에 대한 내 의견과 관련하여 나는 어리석은 대답을 찾은 것 같습니다.
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
<phase>test-compile</phase>
</execution>
</executions>
<configuration>
<outputDirectory>${basedir}\target</outputDirectory>
</configuration>
</plugin>
</plugins>
여기에서 볼 수있는 주요 차이점은 <phase>
태그입니다.
나는 test-jar를 만들 것이며 패키지 단계 이후뿐만 아니라 테스트의 컴파일 단계에서 사용할 수 있습니다.
나를 위해 작동합니다.
https://maven.apache.org/plugins/maven-jar-plugin/examples/create-test-jar.html 은 다음과 같이 말합니다.
테스트 클래스를 포함하는 jar를 만드는 방법 테스트 클래스를 포함하는 jar를 만들려면 해당 클래스를 다시 사용하고 싶을 것입니다. 이 문제를 해결하는 방법에는 두 가지가 있습니다.
The easy way
현재 프로젝트의 테스트 클래스로 연결된 jar를 만들고 전이 테스트 범위 종속성을 풉니 다.
The preferred way
Create a separate project with the test-classes.
Please read that article for detail.
참고URL : https://stackoverflow.com/questions/1725476/maven-test-dependency-in-multi-module-project
'code' 카테고리의 다른 글
Mac OS X 용 IntelliJ에서 "Alt-Insert"에 해당하는 것은 무엇입니까? (0) | 2020.10.10 |
---|---|
부트 스트랩의 tabindex =“-1”은 무엇입니까? (0) | 2020.10.10 |
Python SQL 쿼리 문자열 형식 (0) | 2020.10.10 |
콘솔을 어떻게 지울 수 있습니까? (0) | 2020.10.10 |
Java hashMap 내용을 서로 다른 내용에 넣지 만 기존 키와 값을 바꾸지 않는 방법은 무엇입니까? (0) | 2020.10.10 |