2014-09-17 8 views
2

우리는 다른 프로젝트 B에서 이슈를 다운로드하고, 그 작업을 수행하며, 그 결과로 새로운 이슈를 뱉어내는 프로젝트 A를 가지고 있습니다. maven-dependency-plugin의 'dependency : copy'목표를 사용하여 Maven 저장소에서이 Project B 이슈를 얻습니다.maven-dependency-plugin을 통해 다운로드 한 아티팩트의 SNAPSHOT 버전을 maven-release-plugin에서 확인할 수 있습니까?

Maven 릴리스를 수행 할 때 maven-release-plugin의 'release : prepare'목표에 모든 종속성을 확인하고 SNAPSHOT 버전이 있으면 실패합니다. 이것은 우리의 <dependencies><dependency>...</dependency></dependencies> 태그 아래의 일반적인 의존성에 대해서는 작동하지만, maven-dependency-plugin에 의해 복사 된 아티팩트 "의존성"과는 작동하지 않습니다.

어떻게 이러한 복제 된 아티팩트의 버전을 maven-release-plugin의 준비 테스트에 공개 할 수 있으며 프로젝트 B의 스냅 샷을 포함하는 프로젝트 A 릴리스를 빌드하지 않았는지 확인하십시오. 상황에 맞는 도움이된다면

은, 여기에 우리의 치어에서 받는다는 - 종속성 - 플러그인 설정의 단순화 된 버전입니다 :

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <version>2.8</version> 
    <executions> 
     <execution> 
      <id>copy</id> 
      <phase>process-sources</phase> 
      <goals> 
       <goal>copy</goal> 
      </goals> 
      <configuration> 
       <artifactItems> 
        <artifactItem> 
         <groupId>${ProjectBGroupID}</groupId> 
         <artifactId>${ProjectB}</artifactId> 
         <version>${ProjectBVersion}</version> 
        </artifactItem> 
       </artifactItems> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

답변

0

내 자신의 질문에 대한 답변을 추가, 우리가에 버전 번호를 표시 할 수 있습니다 발견했습니다 프로젝트 A의 pom에 추가 <dependency>...</dependency> 요소 (프로젝트 B를 참조 함)를 포함시켜야합니다. 이것은 스냅 샷으로 해제하려고 할 때 문제를 일으키지 만, 프로젝트 B의 클래스 패스에 프로젝트 B를 노출시킵니다. 우리는 <scope>의 "test"(A의 바이너리에서 B의 클래스를 유지함)를 포함하여 비트를 제한 할 수 있지만 B의 A 단위 테스트는 여전히 "오염 된"상태입니다.

여기 누군가가 실제로는이 아닌 더 나은 해결책은 프로젝트 A의 클래스 패스 (어느 부분 으로든)에 프로젝트 B를 추가하십시오.

+0

과 함께이 솔루션을 사용하고 있습니다. 다른 차이점은 copy-dependencies 목표를 사용하고 있다는 것입니다. 따라서 복사 목표에는 명시적인 버전이 없습니다. 그래도 더 나은 대답을 찾고. – ceilfors