2013-04-25 11 views
7

maven-jetty-pluginとmaven-failsafe-pluginを使用して統合テストを実行しています。私はきれいなMVNを実行すると、桟橋サーバが起動し、インストールサーバ起動後にjettyサーバがハングして統合テストを実行しないのはなぜですか?

<plugin> 
      <artifactId>maven-failsafe-plugin</artifactId> 
      <version>2.7.1</version> 
      <executions> 
       <execution> 
       <id>integration-test</id> 
       <goals> 
        <goal>integration-test</goal> 
       </goals> 
       </execution> 
       <execution> 
       <id>verify</id> 
       <goals> 
        <goal>verify</goal> 
       </goals> 
       </execution> 
      </executions> 
     </plugin> 

     <plugin> 
      <groupId>org.mortbay.jetty</groupId> 
      <artifactId>maven-jetty-plugin</artifactId> 
      <version>6.1.26</version> 
      <configuration> 

        <connectors> 
        <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector"> 
         <port>8080</port> 
         <maxIdleTime>3600000</maxIdleTime> 
        </connector> 
        </connectors> 

       <contextPath>/</contextPath> 
       <scanIntervalSeconds>3</scanIntervalSeconds> 
       <scanTargetPatterns> 
        <scanTargetPattern> 
         <directory>src/main/webapp/WEB-INF</directory> 
         <excludes> 
          <exclude>**/*.jsp</exclude> 
          <exclude>**/*.html</exclude> 
         </excludes> 
         <includes> 
          <include>**/*.page</include> 
          <include>**/*.properties</include> 
          <include>**/*.xml</include> 
         </includes> 
        </scanTargetPattern> 
       </scanTargetPatterns> 
      </configuration> 
      <executions> 
        <execution> 
         <id>start-jetty</id> 
         <phase>pre-integration-test</phase> 
         <goals> 
          <goal>run-war</goal> 
         </goals> 
         <configuration> 
          <scanIntervalSeconds>0</scanIntervalSeconds> 
          <daemon>true</daemon> 
         </configuration> 
        </execution> 
        <execution> 
         <id>stop-jetty</id> 
         <phase>post-integration-test</phase> 
         <goals> 
          <goal>stop</goal> 
         </goals> 
        </execution> 
      </executions> 
     </plugin> 

とその何も起こらないの後に(それが立ち往生):ここに私の設定です。ログの最後の行は次のとおりです:[INFO] Jetty Serverが起動しました。私がcontrol-cを押すと、次のように印刷されます:

2013-04-25 15:24:16.315:INFO::Shutdown hook executing 
2013-04-25 15:24:16.317:INFO::Stopped [email protected]:8080 
2013-04-25 15:24:16.821:INFO:/ca-app:Shutting down log4j 
2013-04-25 15:24:16.821:INFO:/ca-app:Closing Spring root WebApplicationContext 
2013-04-25 15:24:22.108:INFO::Shutdown hook complete[INFO] 
Jetty server exiting. 
[INFO] 
[INFO] --- maven-failsafe-plugin:2.7.1:integration-test (default) @ my-app --- 
[INFO] Failsafe report directory: my-app/target/failsafe-reports 

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 
Running TestSuite 
There are no tests to run. 

Results : 

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 

[WARNING] File encoding has not been set, using platform encoding MacRoman, i.e. build is platform dependent! 
[INFO] 
[INFO] --- maven-jetty-plugin:6.1.26:stop (stop-jetty) @ my-app --- 
[INFO] 
[INFO] --- maven-failsafe-plugin:2.7.1:verify (default) @ my-app --- 
[INFO] Killing Jetty 
[INFO] Failsafe report directory: my-app/target/failsafe-reports 
[WARNING] File encoding has not been set, using platform encoding MacRoman, i.e. build is platform dependent! 
[INFO] 
[INFO] --- maven-install-plugin:2.3.1:install (default-install) @ my-app --- 
[INFO] Installing my-app/target/ca-app-0.1.5-SNAPSHOT.war to ~/.m2/....../my-app/0.1.5-SNAPSHOT/my-app-0.1.5-SNAPSHOT.war 
[INFO] Installing my-app/pom.xml to ~/.m2/....../my-app/0.1.5-SNAPSHOT/my-app-0.1.5-SNAPSHOT.war 
[INFO] 
[INFO] --- maven-dependency-plugin:2.1:sources (install) @ my-app --- 

なぜそれが詰まるのですか?私がcontrol-cを押すと、それは残りのステップをなぜ実行しますか?どうすれば修正できますか?

+0

同様の質問をしたhttp://stackoverflow.com/questions/4759620/integration-tests-wouldnt-start-failsafe-maven?rq = 1。 Askerは、確実なフェールセーフのバージョンを変更すると、彼の問題が解決したとコメントしています。しかし、それは私のために働いていないようです。私はそこにもコメントしています。 –

+0

どんな助力も高く評価されます。 –

答えて

1

run-warの代わりにstartを試してみてください。

\ javadoc \ jetty \ jetty-maven-plugin \ 9.3.0.M2 \ jetty-maven-plugin-9.3.0.M2.jar!\ org \ eclipse \ jetty \ maven \ plugin \開始時にAbstractJettyMojo.nonblocking


か否かがサーバー・ブロックを決定します。デフォルトの動作(false)は、サーバーがWeb要求を引き続き処理している間に、他のプロセスを一時停止させます。これは、サーバーを対話的に操作する目的でサーバーを始動する場合に便利です。これは、桟橋の動作です。実行、桟橋:ラン戦、桟橋:ランエンド展開ゴール。 trueの場合、サーバーは後続のコードの実行をブロックしません。 jettyの動作です。を起動し、jettyのデフォルトの動作:deployゴールを実行します。


0

だから、桟橋を開始するために実行して追加します。

<goals> 
    <goal>stop</goal> 
     <goal>start</goal> 
</goals> 

全体:

<plugin> 
    <groupId>org.eclipse.jetty</groupId> 
    <artifactId>jetty-maven-plugin</artifactId> 
    <version>9.2.10.v20150310</version> 
    <configuration> 
     <war>webapp/target/MyWar.war</war> 
     <stopKey>fooKey</stopKey> 
     <stopPort>8081</stopPort> 
     <stopWait>1</stopWait> 
     <httpConnector> 
      <port>8888</port> 
     </httpConnector> 
    </configuration> 
    <executions> 
     <execution> 
      <id>start-jetty</id> 
      <phase>pre-integration-test</phase> 
      <goals> 
       <goal>stop</goal> 
       <goal>start</goal> 
      </goals> 
      <configuration> 
       <scanIntervalSeconds>0</scanIntervalSeconds> 
       <daemon>true</daemon> 
       <stopKey>STOP</stopKey> 
       <stopPort>8866</stopPort> 
      </configuration> 
     </execution> 
     <execution> 
      <id>stop-jetty</id> 
      <phase>post-integration-test</phase> 
      <goals> 
       <goal>stop</goal> 
      </goals> 
      <configuration> 
       <scanIntervalSeconds>0</scanIntervalSeconds> 
       <daemon>true</daemon> 
       <stopKey>STOP</stopKey> 
       <stopPort>8866</stopPort> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
関連する問題