2017-08-30 7 views
0

Springブートmavenプラグインの停止ゴールは、アプリケーションの停止に失敗し、アプリケーションプロセスがハングアップしてしまいます(同じポートを使用して別のプロセスを開始できません)。 これは私が持っているプラ​​グインの設定です:私はこの動作を引き起こしバグへの参照を見つけることができませんspring boot maven plugin stop goal

 <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
      <version>1.5.6.RELEASE</version> 
      <configuration> 
       <jvmArguments>-DCONFIG_ENVIRONMENT=functionaltest</jvmArguments> 
       <mainClass>...</mainClass> 
       <fork>true</fork> 
      </configuration> 
      <executions> 
       <execution> 
        <id>start-service</id> 
        <phase>pre-integration-test</phase> 
        <goals> 
         <goal>start</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>stop-service</id> 
        <phase>post-integration-test</phase> 
        <goals> 
         <goal>stop</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

。おそらくプラグインを使用していたのでしょうか?

+0

本当に」を使用しているのはなぜですか?フォークされたJVMでspring-bootアプリケーションを実行したい場合は、 ''ブロックの内部に ''ブロックの中に間違っているように見えます。 – glytching

+0

@glitchはい、私はそれも試みました。私は質問のコードをそのように更新しました。 – UndefinedBehavior

答えて

1

を開始し、私は問題が見つかりました:スプリングブートアプリケーション(メインスレッド内)は、jvmがシャットダウンするのを防ぐ新しいスレッドを開始します。 "子"スレッドをデーモンスレッドに変更することで、この問題が解決されました。この問題を解決される問題

 private ExecutorService executorService = Executors.newSingleThreadExecutor(r -> { 
      Thread t = new Thread(r); 
      return t; 
     }); 

コード

 private ExecutorService executorService = Executors.newSingleThreadExecutor(r -> { 
      Thread t = new Thread(r); 
      t.setDaemon(true); 
      return t; 
     }); 

コードは、Javaでのデーモンthrreadsの詳細についてはthis SO questionをチェックしてください。

1

これへの変更の設定、あなたはMavenの実行で起動アプリの コメント解除リモートデバッグを使用したい場合:春ブート:クリーン春ブートを停止します。

<plugin> 
         <groupId>org.springframework.boot</groupId> 
         <artifactId>spring-boot-maven-plugin</artifactId> 
         <configuration> 
          <executable>true</executable> 
          <fork>true</fork> 
          <addResources>true</addResources> 
          <!-- <jvmArguments> --> 
          <!-- -agentlib:jdwp=transport=dt_socket,address=localhost:5005,server=y,suspend=n --> 
          <!-- </jvmArguments> --> 
         </configuration> 

        </plugin> 
関連する問題