前言
如果你想构建一个反对命令行参数的程序,那么 jcommander 非常适合你,jcommander 是一个只有几十 kb 的 Java 命令行参数解析工具,能够通过注解的形式疾速实现命令行参数解析。这篇教程会通过介绍 jcommadner,疾速的创立一个命令行程序,最初反对的命令参数性能如下图。
这个命令行工具仿照 git 操作命令,次要提供了如下性能命令:git-app.jar -help 查看命令帮忙信息。git-app.jar -version 查看以后版本号。git-app.jar clone http://xxxx 通过 URL 克隆一个仓库。git-app.jar add file1 file2 暂存 file1 文件 file2 文件。git-app.jar commit -m “ 正文 ” 提交并增加正文。jcommander 引入截止文章编写工夫,最新版本如下:<!– https://mvnrepository.com/artifact/com.beust/jcommander –>
<dependency>
<groupId>com.beust</groupId>
<artifactId>jcommander</artifactId>
<version>1.82</version>
</dependency>
这个命令行工具仿照 git 操作命令,次要提供了如下性能命令:
git-app.jar -help 查看命令帮忙信息。
git-app.jar -version 查看以后版本号。
git-app.jar clone http://xxxx 通过 URL 克隆一个仓库。
git-app.jar add file1 file2 暂存 file1 文件 file2 文件。
git-app.jar commit -m “ 正文 ” 提交并增加正文。
jcommander 引入
截止文章编写工夫,最新版本如下:
<!-- https://mvnrepository.com/artifact/com.beust/jcommander -->
<dependency>
<groupId>com.beust</groupId>
<artifactId>jcommander</artifactId>
<version>1.82</version>
</dependency>
commander 参数绑定
命令行解析中,参数解析与绑定是最实用的一个场景,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.git
clone http://www.wdbyte.com/test.git
这里是一个字符串参数,须要在命令中输入参数值,对于 boolean 类型的参数,不须要传值,有命令即为 true 值。