この質問は、昨日からのこの質問への回答の結果です。
Reactorプロジェクト内の単一のMavenビルドでJavaアプリケーションとWebアプリケーションを実行します
したがって、上記の質問で回答したように、子プロセスをフォークし、次のような構成を使用してJavaアプリサーバーを実行するmaven-antrun-pluginがあります-
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase> verify </phase>
<configuration>
<target>
<property name="runtime_classpath" refid="maven.runtime.classpath" />
<exec executable="java" spawn="true">
<arg value="-classpath"/>
<arg value="${runtime_classpath}"/>
<arg value="somepackage.AppServer"/>
</exec>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
上記の構成は、バックグラウンドプロセスとしてappserverをスムーズに起動します。
今私の質問は、このプロセスを見つけて、ビルドを開始した後で必要に応じて停止できる簡単な方法があるかどうかです。
jps
JDK内にバンドルされているユーティリティを使用して、実行中のJava実行可能ファイルのプロセスIDを取得できます。
この
jps
ツールは、ターゲットシステム上のインストルメント化されたHotSpot Java仮想マシン(JVM)を一覧表示します。このツールは、アクセス許可を持つJVMに関する情報のレポートに限定されています。
次に、プロセスIDを取得したらtaskkill
、Windowskill
またはUnixシステムを使用してプロセスIDを強制終了できます。
これは、のサンプル構成になりmaven-antrun-plugin
ます。jps
実行可能ファイルを宣言し、呼び出しの結果を属性を持つプロパティにリダイレクトprocess.pid
し<redirector>
ます。結果は<outputfilterchain>
、実行可能ファイルに対応する行のみAppServer
が保持されるようにフィルタリングされます。jps
出力は形式である[PID] [NAME]
ため、名前は<replacestring>
;で削除されます。このように、PIDのみを保持します。最後exec
に、OSに応じて2つの構成があります。
<configuration>
<target>
<property name="runtime_classpath" refid="maven.runtime.classpath" />
<exec executable="java" spawn="true">
<arg value="-classpath" />
<arg value="${runtime_classpath}" />
<arg value="somepackage.AppServer" />
</exec>
<exec executable="${JAVA_HOME}/bin/jps">
<arg value="-l" />
<redirector outputproperty="process.pid">
<outputfilterchain>
<linecontains>
<contains value="somepackage.AppServer" />
</linecontains>
<replacestring from=" somepackage.AppServer" />
</outputfilterchain>
</redirector>
</exec>
<exec executable="taskkill" osfamily="winnt">
<arg value="/PID" />
<arg value="${process.pid}" />
</exec>
<exec executable="kill" osfamily="unix">
<arg value="-15" />
<arg value="${process.pid}" />
</exec>
</target>
</configuration>
「優雅に」と-15
おっしゃっていたので、Unixでこのオプションを使用し、/F
Windows用のオプションは含めませんでした。強制終了する場合kill -9
は、Unixシステムで使用し、/F
Windowsでオプションを追加できます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加