您如何在Java中为命令行参数制作标志?[英] How do you make flags for command line arguments in Java?

问题描述

我有25个应用程序的枚举和某些环境的枚举.

现在,使用代码,我可以通过不通过参数,并且它在所有环境中运行所有应用程序(这是我想要的),或者我可以通过该顺序传递一个应用程序和一个环境,它将运行它那.我需要能够通过执行-App App1 App2 App3 ... -ENV Env1 Env2 ...

之类的操作来传递应用程序列表.

我以前从未使用过标志,也没有尝试过解析一系列命令.这是代码的一部分.我认为IF很好,但其他是我需要帮助的地方.

public static Application chooseAppTest(String[] args) 
    {
        Application application = null;

        switch (Application.valueOf(args[0]))
        {
        case ACCOUNTINVENTORY:
            new AccountInventory(Environment.valueOf(args[1]));
            AccountInventory.accountInventoryDatabaseTests(testResults);
            break; 

public static void main(String[] args) 
{
    // run tests and collect results
    if (args.length == 0)
    {
        LogIn.loginTest(testResults);
        DatabaseTest.testResults(testResults);
        LinkTest.linkTests(testResults);
    }
    else 
    {
            // First choose application, then choose environment
        Application.chooseAppTest(args);
    }

推荐答案

即使这可能无法直接回答您的问题,我强烈建议您为此使用库.一些广泛使用的选项:

  1. Commons CLI-
  2. jcommander- http://jcommander.org/
  3. jopt-simple- http://pholser.github.io/jopt-simple/jopt-simple/aple/a >
  4. argparse4j- http://argparse4j.sourceforge.net/

毕竟," 生活太短了,无法解析命令行参数".例如(使用 jcommander ),您只需要通过注释来定义参数:

//class MyOptions
@Parameter(names = { "-d", "--outputDirectory" }, description = "Directory")
private String outputDirectory;

然后使用:

解析您的bean
public static void main(String[] args){
    MyOptions options = new MyOptions();
    new JCommander(options, args);
}

本文地址:https://www.itbaoku.cn/post/978489.html