2011-11-27 2 views
0

현재 통합 테스트 스위트를 설정했습니다. 기본 모듈은 데이터베이스를 설정하고, 데이터를 저장하고, 테스트를 실행하기 위해 서로 의존하는 여러 모듈을 가진 Maven 프로젝트입니다. 모든 것을 래핑하기 전에. 또한, 거기에 몇 가지 유틸리티 및 테스트 데이터가있는 모듈이 있습니다.Maven : 통합 테스트 용 외부 라이브러리 사용

첫 번째 단계 (위에서 언급하지 않음)는 테스트 할 소프트웨어 제품군을 구성하는 많은 JAR 파일을 포함하는 압축 이미지의 복사본입니다. 불행하게도이 소프트웨어는 Maven이 아니라 Ant에 의해 빌드되므로 Artifactory 또는 이와 유사한 것을 찾을 수 없습니다.

통합 테스트 방법을 사용하여 이미지를 복사하고 압축을 푸는 데 문제가 생겼으나 Maven 클래스 경로에 JAR 파일을 추가하는 방법을 알지 못합니다. 다른 모든 모듈은 ZIP 파일에서 추출한 jar에 대해 컴파일하고 실행해야합니다.

나중에 컴파일 및 테스트 실행을 위해 Maven 클래스 경로에 JAR 파일을 추가 할 수 있습니까? ZIP 컨텐츠의 대상은 항상 동일한 디렉토리입니다. 아쉽게도 JAR의 이름에는 변경되는 버전 정보 (빌드 번호)가 포함되어 있습니다. 그래서 시스템과 태그의 쉬운 사용은 그렇게 쉽게 작동하지 않습니다. $ {package.path}/lib/* / .jar와 같은 경로 항목은 좋을 것입니다. 플러그인이 있습니까?

아니면 빌드 빌더 JAR에 대한 통합 테스트를 설정하는 사람이 있습니까?

+0

Ant 스크립트에서 [Ivy] (http://ant.apache.org/ivy/)를 사용하여 Artifactory에 게시 할 생각이 있으십니까? – McDowell

답변

1

모든 의존성에서 하나의 jar를 만듭니다. 모든 것은 ${package.path}/lib/*/.jar입니다.

maven을 실행하기 전에 또는 maven 빌드의 일부로 ant 작업을 사용하여이 항아리를 만들 수 있습니다.

병을 병합하려면 Ant Jar Task (아카이브 병합하기 섹션 참조)을 사용할 수 있습니다. 거기에서 :

<jar destfile="build/main/checksites.jar"> 
    <fileset dir="build/main/classes"/> 
    <restrict> 
    <name name="**/*.class"/> 
    <archives> 
     <zips> 
     <fileset dir="lib/main" includes="**/*.jar"/> 
     </zips> 
    </archives> 
    </restrict> 
</jar> 

이것은 lib/main에있는 모든 jar의 모든 클래스를 포함하는 jar 파일을 만듭니다.

그러면이 jar를 가리키는 시스템 범위를 maven에서 정상적으로 사용할 수 있습니다. 참고 : ant를 통해 maven에 jar 파일을 만드는 경우 제대로 정리되도록 jar 파일을 대상에 만들어야합니다.

<plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 

    <executions> 
     <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      <configuration> 
       <tasks> 
        <property name="local.project.artifact.name" value="${project.build.finalName}" /> 
        <property name="local.distribution.artifact.name" value="${local.project.artifact.name}-distribution" /> 
        <property name="local.distribution.artifact.file" value="${project.build.directory}/${local.distribution.artifact.name}.zip" /> 
        <ant antfile="build-deploy.xml" /> 
       </tasks> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

이 패키지 단계에서 개미 빌드 파일 build-deploy.xml을 실행합니다

당신은 유사 때문에, maven antrun plugin 사용할 수 받는다는에서 개미 빌드 파일을 사용합니다. 시스템에 필요한 수정은 독자를위한 연습으로 남겨 둡니다 :-).

+0

멋진 아이디어. 현재 상황에 대한 문제는 JAR 파일 내에 서로 겹쳐 쓰는 아티팩트가 있다는 것입니다. 그건 작동하지 않습니다. 한편, jar 파일이 존재하지 않는 한 Maven은 불평하고 시작하지 않을 것이다. Maven을 실행하는 동안 클래스 경로를 변경하려면 어떻게해야합니까? –

+0

프로세스 리소스의 일부로 수행하거나 단계를 확인하더라도 불평을합니까? –

+0

아, 네 말이 맞아. Maven Eclipse 플러그인은 불평하지만 명령 행 도구는 프로세스 리소스가 될 때까지하지 않습니다. 그것은 좋은 징조였다. Ant 태스크를 추가하고 Maven에 프로세스 리소스 단계에서 종속성을 부여하는 방대한 ZIP 파일을 얻습니다. 그러나 Classpath는 여전히 작동하지 않습니다. 매니 페스트가 누락 된 것 같아요. 아이디어가 있습니까?컴파일 단계는 무시 무시하게 실패합니다 ... ;-) –

관련 문제