0

複数のモジュールで構成される Java コマンド ライン アプリケーションを構築しました。したがって、コマンド ラインからアプリケーションを起動するときは、1 つのパラメーターとそのオプションを次のように渡す必要があります。

cmd-> java -jar application -startModul1 option1 folderPath 

また

cmd-> java -jar application -startModul5 500 folderPath 1222 

現在、アプリケーションを起動し、要求されたパラメーターとオプションを渡すことで、各モジュールを開始する必要があります。今のところはわかりましたが、後で20個のモジュールがあるとしましょう。いくつかのモジュールが次々に開始されるプロセスチェーンを生成したいと思います。

たとえば、最後に、上記の例の両方のモジュールを 1 つのコマンドだけで開始できます。

cmd-> java -jar application -startAllModules option1 500 folderPath 1222 

既存のコマンド ライン モジュールを使用してそのようなプロセス チェーンを生成できるフレームワークはありますか? プロセスチェーンを構成するだけで、1つのコマンドで実行する必要があるモジュールとそのパラメーターを選択できる、ある種のxmlファイルなどが必要なため、これはプログラム的には何もすべきではありません。

4

2 に答える 2

1

プログラムをインタプリタに変えることを考えたことはありますか?

于 2012-08-21T11:20:05.597 に答える
1

コマンドラインを解析し、(使用したい xml から) 実行する必要がある単純なコマンドを理解し、それらを起動するだけで十分だと思います。

それらを起動する方法は?

Process p = Runtime.exec(String[] cmdarray)

ここで、cmdarray にはコマンドの各単語が含まれます。

{"java", "-jar", "application", "-startModul1", "option1", "folderPath"}

p.waitFor();

起動されたコマンドが終了するまでこのスレッドを待機させたい場合。

更新:非同時

後者は、複数の独立したプロセスを並行して実行する場合に使用されました。必要なコマンド用の 1 つ。

それらを次々に実行するだけでよい場合は、もっと簡単な方法があります。メインは、複数のモジュールを実行する必要があることに気付くと、適切な引数を使用して自分自身を呼び出します。

public static void main(String[] args) throws Exception {
    // parse params
    if (it's a multi module command line) {
       for (each module you have to execute) {
          main(new String[] {"-startModule1", ..., ...}); // call myself with different args
       }
    }
    else {
       // execute what you've been asked for
    }
}
于 2012-08-21T12:34:34.130 に答える