2016-06-09 70 views
0

我想用jetty-maven-plugin作爲平臺,在那裏我可以用外部assambled戰爭來測試我的應用程序。jetty-maven-plugin with run-war停止maven執行

所以,我建立了我的Maven的碼頭,插件具有以下配置:

    <plugin> 
         <groupId>org.eclipse.jetty</groupId> 
         <artifactId>jetty-maven-plugin</artifactId> 
         <configuration> 

          <war>${project.build.directory}/some.war</war> 

         </configuration> 
         <executions> 
          <execution> 
           <id>start-jetty</id> 
           <phase>integration-test</phase> 
           <goals> 
            <goal>run-war</goal> 
           </goals> 
           <configuration> 
          <war>${project.build.directory}/some.war</war> 
           </configuration> 
          </execution> 
          <execution> 
           <phase>post-integration-test</phase> 
           <goals> 
            <goal>stop</goal> 
           </goals> 
           <configuration> 
            <stopKey>stop</stopKey> 
            <stopPort>8888</stopPort> 
           </configuration> 
          </execution> 
         </executions> 
        </plugin> 

當我運行它,我得到類似的東西:

[INFO] Started [email protected]{HTTP/1.1,[http/1.1]}{0.0.0.0:8888} 
[INFO] Started @21213ms 
[INFO] Started Jetty Server 

這是確定的,但它停止執行。之後,我的測試應該運行,但它不會。我可以使用碼頭:開始這將是一個沒有戰爭的解決方法,因爲它會繼續執行測試,但我無法將戰爭文件附加到此目標。

回答

0

這就是maven插件的設計方式。

它不適用於外部戰爭,或多個戰爭,或多種情況下,或生產使用。

它被設計爲在單個項目(可以是maven多模塊反應器構建的一部分)上運行,其被定義爲<packaging>war</packaging>

只有jetty:start允許執行繼續,所有其他目標不是爲此設計的。

jetty:start被設計爲與maven的integration-test階段以及maven-failsafe-plugin一起工作。

參見:http://maven.apache.org/surefire/maven-failsafe-plugin/usage.html#Using_jetty_and_maven-failsafe-plugin

所有其他maven-jetty-plugin目標是專爲項目的手工測試與<packaging>war</packaging>