2012-06-21 3 views
1

외부 (가능하면 원격) .war 파일 (App T)을 내 테스트 내부에서 웹 응용 프로그램 리소스로 시작하여 테스트중인 시스템 (App A)는 REST 인터페이스에 대한 호출을 실행하기 위해이 인터페이스에 연결할 수 있습니다.내부에서 외부 전쟁 (JUnitRunner) 통합 테스트를 통해 Jetty를 시작하십시오.

테스트중인 시스템 (App A)에 대한 부두를 시작하는 방법에 대한 자습서가 많이 있습니다. 또한 빌드주기의 일부로 외부 .war (App T)에 대한 maven 시작 부두를 가져 오는 방법에 대해 알아 냈습니다. 그러나 위의 작업을 수행 할 수 있는지를 판단 할 수 없습니다.

이상하게도 AppT 프로젝트를 maven 종속성으로 추가하고 classpath를 통해 액세스합니다.

답변

3

글쎄, 원격 전쟁 파일이라면 어떻게해야할지 모르겠다. (아마도 부두 플러그인을 실행하기 전에 먼저 다운로드해야 할 것이다.) 이미 파일 시스템에 어딘가에있어 때, :

 <plugin> 
      <groupId>org.mortbay.jetty</groupId> 
      <artifactId>jetty-maven-plugin</artifactId> 
      <version>${version.jetty}</version> 
      <configuration> 

       <contextHandlers> 
        <contextHandler implementation="org.eclipse.jetty.webapp.WebAppContext"> 
         <war>${project.build.directory}/webapps/foo-bar.war</war> 
         <contextPath>/foo</contextPath> 
        </contextHandler> 
       </contextHandlers> 

      </configuration> 
     </plugin> 

내 조언은 범위가 종속성으로 전쟁을 추가하는 것입니다 제공. 이 마지막 비트 위의 해결 유물이 전에 대상 디렉토리의 웹 어플리케이션의 하위 폴더에 복사되어 있는지 확인합니다

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.3</version> 

      <executions> 
       <execution> 
        <!-- Used to copy the foo bar war to the webapps folder --> 
        <id>copy-dependency-foo-bar</id> 
        <phase>process-resources</phase> 
        <goals> 
         <goal>copy</goal> 
        </goals> 

        <configuration> 
         <artifactItems> 
          <artifactItem> 
           <groupId>com.foo.bar</groupId> 
           <artifactId>foo-bar</artifactId> 
           <version>${version.foo.bar}</version> 
           <type>war</type> 
           <overWrite>true</overWrite> 
           <outputDirectory>${project.build.directory}/webapps</outputDirectory> 
           <destFileName>foo-bar.war</destFileName> 
          </artifactItem> 
         </artifactItems> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

: 또한

<dependencies> 

    <!-- Webapps which will not be included in the final WAR artifact: --> 
    <dependency> 
     <groupId>com.foo.bar</groupId> 
     <artifactId>foo-bar</artifactId> 
     <version>${version.foo.bar}</version> 
     <type>war</type> 
     <scope>provided</scope> 
    </dependency> 

</dependencies> 

, 당신이 가장 가능성이 뭔가를해야합니다 jetty 플러그인이로드하려고했습니다.

+0

당신이이 일에 감사를 표합니다.하지만 제 질문을 올바르게 읽지 못했을 까봐 두렵습니다. "나는 또한 외계인 .war에 대한 maven 시작 부두를 어떻게 가져야하는지에 대해 알아 냈습니다." 귀하의 방법은 여기에 잘 설명되어 있습니다 : http://javasplitter.blogspot.de/2012/01/starting-dependency-war-artifact-using.html하지만 그건 내가 원하는 건 아니에요. – Pete

+0

사실, 당신이 묘사 한 부분을 보지 못했습니다. 이렇게 할 수는 없습니다. Jetty를 강제로 시작하는 테스트를 수행 할 수 없습니다. 그러나 다른 war 파일에 대해 여러 개의 를 가질 수 있습니다. App T 용 war 파일을 저장소에서 사용할 수 있도록 설정하면이 방법으로 문제가 발생하지 않습니다. 아직 제대로하지 못했다면 질문을 해결할 수 있습니다. – carlspring