焦点热门:使用 JCommander 解析命令行参数

2023-06-21 19:56:16 来源:程序员客栈
前言

如果你想构建一个支持命令行参数的程序,那么 jcommander 非常适合你,jcommander 是一个只有几十 kb 的 Java 命令行参数解析工具,可以通过注解的方式快速实现命令行参数解析。

这篇教程会通过介绍 jcommadner ,快速的创建一个命令行程序,最后支持的命令参数功能如下图。


【资料图】

这个命令行工具仿照 git 操作命令,主要提供了如下功能命令:

1. git-app.jar -help查看命令帮助信息。

2. git-app.jar -version查看当前版本号。

3. git-app.jar clone http://xxxx通过 URL 克隆一个仓库。

4. git-app.jar add file1 file2暂存 file1 文件 file2 文件。

5. git-app.jar commit -m "注释"提交并添加注释。

jcommander 引入

截止文章编写时间,最新版本如下:

com.beustjcommander1.82

jcommander 参数绑定

命令行解析中,参数解析与绑定是最实用的一个场景,jcommander 使用 Parameter注解进行参数绑定。我们定义一个 GitCommandOptions.java类来测试参数绑定。

package com.wdbyte.jcommander.v1;import com.beust.jcommander.Parameter;/** * @author https://www.wdbyte.com */public class GitCommandOptions {    @Parameter(names = {"clone"},        description = "克隆远程仓库数据")    private String cloneUrl;    public String getCloneUrl() {        return cloneUrl;    }}

使用 jcommander 结合 GitCommandOptions 来解析参数。

package com.wdbyte.jcommander.v1;import com.beust.jcommander.JCommander;/** * @author https://www.wdbyte.com */public class GitApp {    public static void main(String[] args) {            // args = new String[]{"clone","http://www.wdbyte.com/test.git"};        GitCommandOptions gitCommandOptions = new GitCommandOptions();        JCommander commander = JCommander.newBuilder()            .addObject(gitCommandOptions)            .build();        commander.parse(args);        System.out.println("clone " + gitCommandOptions.getCloneUrl());    }}

打包后可以执行命令参数:

$ java -jar git-app.jar clone http://www.wdbyte.com/test.gitclone http://www.wdbyte.com/test.git

这里是一个字符串参数,需要在命令中输出参数值,对于 boolean 类型的参数,不需要传值,有命令即为 true 值。

参数名称

@Parameter注解中的 names属性可以定义参数的名称。且可以指定多个参数名称,让我再添加 version参数和 help参数,同时设置参数别名。这两个参数是 boolean 类型。

@Parameter(names = {"help", "-help", "-h"},    description = "查看帮助信息",    help = true)private boolean help;@Parameter(names = {"version", "-version", "-v"},    description = "显示当前版本号")private boolean version = false;

参数限制

clone参数可以接受一个要克隆的 URL 链接,但是正常情况下只需要一个 URL 链接。可以通过 arity = 1进行限制。

关键词:
x 广告
x 广告

Copyright   2015-2022 财务报告网版权所有  备案号: 京ICP备12018864号-19   联系邮箱:29 13 23 6 @qq.com