0

我已经构建了一个由几个模块组成的 Java 命令行应用程序。因此,当您通过命令行启动应用程序时,您必须传递一个参数及其选项,例如:

cmd-> java -jar application -startModul1 option1 folderPath 

或者

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

目前我必须通过启动应用程序并传递请求的参数+选项来启动每个模块。现在就是这样,但后来,当我说 20 个模块时,我想生成一个进程链,其中几个模块一个接一个地启动。

例如,最后我可以只用一个命令从上面的例子中启动两个模块。

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

是否有一个框架,我可以在其中使用现有的命令行模块生成这样的进程链?这不应该以编程方式进行,因为我想要某种 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();

如果您希望此线程等到启动的命令结束。

更新:非并发

后者是为了以防你想并行运行几个独立的进程。一个用于您需要的命令。

如果您只需要一个接一个地执行它们,那么还有一种更简单的方法。当 main 意识到它必须执行多个模块时,它会使用适当的参数调用自己。

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 回答