如何使用任一参数,两个参数或两个参数运行命令行参数? - Java

时间:2014-07-28 17:56:41

标签: java command-line-arguments

我正在制作一个selenium webdriver,我有25个应用程序和4个环境。我将它们设置为枚举,以便我可以给出特定的命令行参数。现在我让它工作,这样它需要一个应用程序,然后按顺序一个环境。我需要能够做类似

的事情
-app app1 app2 app3 -env env1 env2

我需要它不要参数,参数或两个参数。这是我到目前为止所做的。

if (args.length == 0)
{
    LogIn.loginTest(testResults);
    DatabaseTest.testResults(testResults);
    LinkTest.linkTests(testResults);
}
else 
{
    // First choose application, then choose environment
    Application.chooseAppTest(args);
}

2 个答案:

答案 0 :(得分:1)

考虑使用库来评估命令行参数,例如JOptSimple。他们在website上提供了一组很好的例子,你不必重新发明轮子。根据您的示例,根据文档(尚未尝试过),以下内容应该有效:

OptionParser parser = new OptionParser("app:env:");
OptionSet options = parser.parse("-app", "app1", "app2", "app3", "-env", "env1", "env2");
然后

options.valuesOf("app")应返回“app1”,“app2”和“app3”的列表。

答案 1 :(得分:0)

无需为您编写代码,这里有一个建议:

  • 遍历args数组的所有参数。
  • 确保第一个等于-app或-env
  • 从数组中的第二个字符串中收集所有参数的一个列表,直到找到-app或-env
  • 将第二个-app / -env
  • 后面的所有参数收集到另一个列表中
  • 不允许-app或--env出现两次
  • 现在你将有两个列表,一个用于应用程序,另一个用于envs(尽管它们可以为空)