0

종속성내가 아파치 ActiveMQ를 아르테미스 프로젝트의 자식 저장소 (<a href="https://github.com/apache/activemq-artemis" rel="nofollow">https://github.com/apache/activemq-artemis</a>)를 복제 한 후 입력

mvn -Ptests test -pl :integration-tests 

나는 다음과 같은

같은 로그 메시지를보고 깜짝 놀랐다
... 
Downloading: http://repository.apache.org/snapshots/org/apache/activemq/artemis-selector/1.4.0-SNAPSHOT/artemis-selector-1.4.0-20160625.030221-11.jar 
Downloading: http://repository.apache.org/snapshots/org/apache/activemq/artemis-core-client/1.4.0-SNAPSHOT/artemis-core-client-1.4.0-20160625.030211-11.jar 
... 

예를 들어 artemis-core-client은 내가 처음에 복제 한 git 저장소에 포함되어 있습니다. maven이 거기에서 빌드 할 것으로 예상했습니다.

그런 식으로 핵심 클라이언트 소스를 변경하면 통합 테스트에 의해 선택됩니다.

대신 maven이 저장소에서 jar를 다운로드 중입니다.

질문: git 저장소에있는 모든 모듈을 항상 빌드하고 "진정한"종속성 만 다운로드하도록 maven을 구성하려면 어떻게해야합니까? 이는 git 저장소에없는 것을 의미합니까?

+2

이이 질문과 동일/questions/33131880/maven-multi-module-project-can not-find-sibling-module 루트 프로젝트에서 모듈을 직접 실행하지 말고 Maven을 실행해야합니다. Maven이 종속성을 다운로드하려고하기 때문에 종속성이 설치되지 않았기 때문입니다. – Tunaki

+0

@ Tunaki 따라서 "-pl : integration-tests"는 컴파일 대신 maven을 다운로드하게합니다. 권리? 주 프로젝트 .pom 파일이있는 디렉토리에서 mvn을 실행하기 때문에. – user7610

+0

아니요, 메인 프로젝트에 통합 테스트 모듈이 없습니다. 내 대답을 확인하십시오. 라이브러리/메인 프로젝트가 아니라 테스트/메인 프로젝트에서 maven을 실행하고 있습니다. –

답변

1

메인 프로젝트에서 메인 프로젝트 인 pom.xml에서 Maven 빌드를 실행하지 않고 실제로는 artemis-selectorartemis-core-client 모듈을 정의합니다.

tests 및 해당 모듈의 pom.xml에서 Maven 빌드를 실행하고 테스트 모듈 만 정의합니다. 이것은 side/test 프로젝트입니다. 이전 POM 파일은 부모 클래스를 가지지 만 상위 모듈 정의에는 아무런 역할을하지 않습니다. 따라서 의존성은 모듈로 해결되지 않고 Maven 의존성으로 해결됩니다.

이전 프로젝트를 설치 (mvn clean install 통해)하여 로컬 Maven 캐시에서 라이브러리를 사용할 수 있으므로 (다운로드가 트리거되지 않음) tests 프로젝트를 실행해야합니다. 그것을 더 명확히 집계 차이점을 대 상속에 대한 official doc


확인합니다. 스택 오버플로에서

, 후속 스레드도 재미있을 수 : http://stackoverflow.com :

+0

"이전 프로젝트에서 mvn clean install을 통해 먼저 설치해야합니다."이것은 다소 오류가 발생하는 것 같습니다. 테스트하려는 다른 Jar 세트에 대해 테스트를 실행하는 것이 매우 쉽기 때문입니다. 이것이 Maven으로 할 수있는 최선의 것입니까, 아니면 프로젝트를 더 잘 구성 할 수 있습니까? 당신이 그것이 필요하다고 생각한다면 나는 새로운 질문을 할 것입니다. – user7610

+0

@ JiriDanek 그것은 아마도 모듈의 수를 줄이거 나 관심사를 분리하기 위해 다른 주요 프로젝트에서 통합 테스트를 수행하는 프로젝트에 대해 선택한 전략입니다 (모듈에 대한 통합 테스트 없음, 진행 코드?). 다른 전략으로서 전체 테스트 사이드 프로젝트는 모듈을 전체 빌드에 추가하여 기본 프로젝트의 프로필 일 수있었습니다. 그러나, pom의 코멘트로부터, 주 건물 전체가 이미 2 시간 이상 걸릴 것 같아서 아마이 선택에서 역할을했을 것입니다. –

+0

@ JiriDanek이 도움이된다면 [accepting] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) 질문에 답하지 않는 것이 좋습니다. 전 세계적으로 답변이없는 것으로 나타납니다. 감사. –