前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GoogleOptions命令行参数解析工具

GoogleOptions命令行参数解析工具

作者头像
大忽悠爱学习
发布2023-05-11 09:17:07
4800
发布2023-05-11 09:17:07
举报
文章被收录于专栏:c++与qt学习

GoogleOptions命令行参数解析工具

GoogleOptions

GoogleOptions是来自 Bazel Project 的命令行参数解析器。将 com.google.devtools.common.options 包拆分为一个单独的 jar,用于通用实用程序。

在这里插入图片描述
在这里插入图片描述

环境搭建:

  • 引入maven依赖
代码语言:javascript
复制
<dependency>
  <groupId>com.github.pcj</groupId>
  <artifactId>google-options</artifactId>
  <version>1.0.0</version>
</dependency>
  • 引入官方提供的示例Demo
代码语言:javascript
复制
package example;

import com.google.devtools.common.options.Option;
import com.google.devtools.common.options.OptionsBase;

import java.util.List;

/**
 * Command-line options definition for example server.
 */
public class ServerOptions extends OptionsBase {

  @Option(
      name = "help",
      abbrev = 'h',
      help = "Prints usage info.",
      defaultValue = "true"
    )
  public boolean help;

  @Option(
      name = "host",
      abbrev = 'o',
      help = "The server host.",
      category = "startup",
      defaultValue = ""
  )
  public String host;

  @Option(
    name = "port",
    abbrev = 'p',
    help = "The server port.",
    category = "startup",
    defaultValue = "8080"
    )
    public int port;

  @Option(
    name = "dir",
    abbrev = 'd',
    help = "Name of directory to serve static files.",
    category = "startup",
    allowMultiple = true,
    defaultValue = ""
    )
    public List<String> dirs;

}

Option注解参数说明

  • name:选项名称
  • defaultValue:默认值
  • abbrev:选项的单字符缩写
  • help:使用信息的帮助字符串
  • category:描述此选项所属的类别
  • allowMultiple:一个标志,指示是否应允许选项类型在单个选项列表中多次出现。

实际使用:

代码语言:javascript
复制
package example;

import com.google.devtools.common.options.OptionsParser;
import java.util.Collections;

public class Server {
  //java -jar server.jar --host=127.0.0.1 --port=21 --dir=E:\test --dir=E:\demo
  public static void main(String[] args) {
    OptionsParser parser = OptionsParser.newOptionsParser(ServerOptions.class);
    parser.parseAndExitUponError(args);
    ServerOptions options = parser.getOptions(ServerOptions.class);
    if (options.host.isEmpty() || options.port < 0 || options.dirs.isEmpty()) {
      printUsage(parser);
      return;
    }

    System.out.format("Starting server at %s:%d...\n", options.host, options.port);
    for (String dirname : options.dirs) {
      System.out.format("\\--> Serving static files at <%s>\n", dirname);
    }
  }

  private static void printUsage(OptionsParser parser) {
    System.out.println("Usage: java -jar server.jar OPTIONS");
    System.out.println(parser.describeOptions(Collections.<String, String>emptyMap(),
                                              OptionsParser.HelpVerbosity.LONG));
  }

}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-05-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • GoogleOptions命令行参数解析工具
  • GoogleOptions
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档