Apache CLI: как сделать опцию необязательной или пометить - PullRequest
0 голосов
/ 30 марта 2020

Я использую библиотеку cli-commons apache в своем классе, и мне нужна функциональность, позволяющая сделать одну опцию в качестве флага, я расскажу вам через пример, поэтому вот код

CLI. java

 public boolean readCommandLineParameters(String[] args) {
 Logger log = Logger.getLogger(CLIReader.class);
 Options options = new Options();
 Option serverurl = Option.builder("url").longOpt("server url").desc("RTC Server url").required().hasArg().argName("url").build();
options.addOption(serverurl);

Option userOpt = Option.builder("u").longOpt("user").desc("RTC User Name").hasArg().argName("user").required().build();
options.addOption(userOpt);

Option pwdOpt = Option.builder("p").longOpt("password").desc("RTC user password").hasArg().argName("password").required().build();
options.addOption(pwdOpt);
Option completeLoggerOpt = Option.builder("v").longOpt("completeLogger").desc("Complete Logger Info + Errors").build();
options.addOption(completeLoggerOpt);
try {
  CommandLineParser parser = new DefaultParser();
  CommandLine cmd = parser.parse(options, args, true);
 user = cmd.getOptionValue("u");
  password = cmd.getOptionValue("p");
  serverurl = cmd.getOptionValue("s");
 }
  catch (Exception e) {
log.info(e.getMessage());
}
 return false;
}
public String getUser() {
return user;
}


 /**
 * @return the password
 */
public String getPassword() {
return password;
}


 /**
 * @return the serverUrl
 */
public String getServerUrl() {
return serverUrl;
 }

ab c. java (Не основной класс, фрагмент кода):

  if(isLockedByMe)
                          {
                             //System.out.println("Do Nothing");
                            if(completeLoggerFlag.equals("-v")) 
                            {
                              log.info("Success"); 
                            }
                            else if(completeLoggerFlag.equalsIgnoreCase(""))
                            {
                              log.info("Success as well");


                            }
                            else if(!completeLoggerFlag.equalsIgnoreCase("-v") || !completeLoggerFlag.equalsIgnoreCase(""))
                            {

                              log.error("Failed");
                              break;
                            }
                          }

Итак, здесь я собираюсь передать командную строку как: java -jar Ab c .jar -u стек -p flow@860 -url https://www.google.com -v, затем придет сообщение «Успех», и когда оно будет передано как java -jar Ab c .jar -u стек -p flow@860 -url https://www.google.com, затем придет сообщение «Успех также» и когда будет передано как java -jar Ab c .jar - u стек -p flow@860 -url https://www.google.com abbshcgs@34 \ тогда придет сообщение "Failed"

Так возможно ли это сделать? Ваша помощь будет по достоинству оценена, Заранее спасибо, будьте в безопасности!

...