maven-antrun-pluginによって開始されたJavaプロセスを正常に停止します

ゴータム

この質問は、昨日からのこの質問への回答の結果です。

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をスムーズに起動します。

今私の質問は、このプロセスを見つけて、ビルドを開始した後で必要に応じて停止できる簡単な方法があるかどうかです。

ツナキ

jpsJDK内にバンドルされているユーティリティを使用して、実行中の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でこのオプションを使用し、/FWindows用オプションは含めませんでした強制終了する場合kill -9は、Unixシステムで使用し、/FWindowsでオプションを追加できます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Maven AntRun plugin include root folder on tar

分類Dev

Maven antrun:Mavenプロパティをantに渡します

分類Dev

Maven Antrun:スキップされたタスクを有効にする方法は?

分類Dev

maven-antrun-pluginによるantcontrib <if>タスクの使用

分類Dev

maven-antrun-pluginからantスクリプトを呼び出すとIllegalAccessError

分類Dev

Groovyのコンパイルにmaven-antrun-pluginを使用する際の例外

分類Dev

maven3-maven-antrun-plugin-「タスクの作成に失敗したか、入力した場合」

分類Dev

maven-antrun-pluginを使用したIntelliJデバッガーの実行

分類Dev

maven-antrun-pluginを使用したMaven Ant BuildException ... javacコンパイラが見つかりません

分類Dev

Mavenのmaven-antrun-pluginを実行するためにAntをインストールする必要がありますか?

分類Dev

Jenkinsは、Maven-antrun-pluginをスキップして、コマンドを使用してMavenビルドでbuild.xmlファイルを実行する方法

分類Dev

プラグインmaven-antrun-pluginまたはその依存関係の1つを解決できませんでした

分類Dev

maven-antrun-plugin1つの不明なサブディレクトリ名からファイルをコピーします

分類Dev

maven-antrun-pluginから実行されているAntは、Java9でスクリプトエンジンを見つけることができません

分類Dev

2つのビルドプロファイルがアクティブですが、Mavenはantrunプラグインタスクを1つのプロファイルでのみ実行します

分類Dev

cmd "antrun"を使用してcoojaをcontikiで実行する

分類Dev

Mavenによって駆動されるVaadin14WebアプリでWebアプリが起動したときにJavaコードによってロードされたデータまたは構成ファイルを配置する場所

分類Dev

maven-publish gradleプラグインによって公開されている場合、JARの名前の「-all」サフィックスを削除します

分類Dev

mavenを使用してC ++プロジェクトをビルドするためにmaven-native-pluginが広く使用されていますか?

分類Dev

Mavenでの統合テスト中に外部プロセスを開始する

分類Dev

Javaによって開始されたプロセスを終了する方法

分類Dev

maven pom.xmlを使用して、異なるオプションで同じJavaプロセスの2つのインスタンスを開始します

分類Dev

Eclipseで(Mavenを使用する)Javaプロジェクトを開くにはどうすればよいですか?(M2Eまたはmaven-eclipse-pluginを使用しますか)

分類Dev

maven-shade-pluginによって作成されたJarにテストクラスを含める方法は?

分類Dev

Mavenパッケージによって生成されたソースjarにscalaクラスを含めます

分類Dev

exec-maven-pluginは、PATH上にあっても指定されたプログラムを実行できないと言います

分類Dev

EclipseはMavenバンドルプラグインによって作成されたマニフェストを上書きします

分類Dev

Hibernate3-maven-pluginによって生成されたDAOに@PersistenceContextを挿入する方法

分類Dev

maven-assembly-pluginによってビルドされた場合、メインアーティファクトを手動でアタッチします

Related 関連記事

  1. 1

    Maven AntRun plugin include root folder on tar

  2. 2

    Maven antrun:Mavenプロパティをantに渡します

  3. 3

    Maven Antrun:スキップされたタスクを有効にする方法は?

  4. 4

    maven-antrun-pluginによるantcontrib <if>タスクの使用

  5. 5

    maven-antrun-pluginからantスクリプトを呼び出すとIllegalAccessError

  6. 6

    Groovyのコンパイルにmaven-antrun-pluginを使用する際の例外

  7. 7

    maven3-maven-antrun-plugin-「タスクの作成に失敗したか、入力した場合」

  8. 8

    maven-antrun-pluginを使用したIntelliJデバッガーの実行

  9. 9

    maven-antrun-pluginを使用したMaven Ant BuildException ... javacコンパイラが見つかりません

  10. 10

    Mavenのmaven-antrun-pluginを実行するためにAntをインストールする必要がありますか?

  11. 11

    Jenkinsは、Maven-antrun-pluginをスキップして、コマンドを使用してMavenビルドでbuild.xmlファイルを実行する方法

  12. 12

    プラグインmaven-antrun-pluginまたはその依存関係の1つを解決できませんでした

  13. 13

    maven-antrun-plugin1つの不明なサブディレクトリ名からファイルをコピーします

  14. 14

    maven-antrun-pluginから実行されているAntは、Java9でスクリプトエンジンを見つけることができません

  15. 15

    2つのビルドプロファイルがアクティブですが、Mavenはantrunプラグインタスクを1つのプロファイルでのみ実行します

  16. 16

    cmd "antrun"を使用してcoojaをcontikiで実行する

  17. 17

    Mavenによって駆動されるVaadin14WebアプリでWebアプリが起動したときにJavaコードによってロードされたデータまたは構成ファイルを配置する場所

  18. 18

    maven-publish gradleプラグインによって公開されている場合、JARの名前の「-all」サフィックスを削除します

  19. 19

    mavenを使用してC ++プロジェクトをビルドするためにmaven-native-pluginが広く使用されていますか?

  20. 20

    Mavenでの統合テスト中に外部プロセスを開始する

  21. 21

    Javaによって開始されたプロセスを終了する方法

  22. 22

    maven pom.xmlを使用して、異なるオプションで同じJavaプロセスの2つのインスタンスを開始します

  23. 23

    Eclipseで(Mavenを使用する)Javaプロジェクトを開くにはどうすればよいですか?(M2Eまたはmaven-eclipse-pluginを使用しますか)

  24. 24

    maven-shade-pluginによって作成されたJarにテストクラスを含める方法は?

  25. 25

    Mavenパッケージによって生成されたソースjarにscalaクラスを含めます

  26. 26

    exec-maven-pluginは、PATH上にあっても指定されたプログラムを実行できないと言います

  27. 27

    EclipseはMavenバンドルプラグインによって作成されたマニフェストを上書きします

  28. 28

    Hibernate3-maven-pluginによって生成されたDAOに@PersistenceContextを挿入する方法

  29. 29

    maven-assembly-pluginによってビルドされた場合、メインアーティファクトを手動でアタッチします

ホットタグ

アーカイブ