写点什么

Java 命令行参数解析方式探索(三):Picocli

作者:冰心的小屋
  • 2023-07-27
    北京
  • 本文字数:1098 字

    阅读完需:约 4 分钟

Java 命令行参数解析方式探索(三):Picocli

Picocli 同样一款命令行参数解析工具,通过注解方式编程,该工具轻量、代码侵入少、功能强大和容易扩展,主要体现在:

  • 解析过程提供了多个切入点,方便开发者介入;

  • 参数的解析有着更好的容错性;

  • 多种语法糖更加自由的声明参数;

  • 对于某些框架可以快速集成,例如依赖注入框架 Spring 和 Guice 等。


下面来介绍下如何使用,首先 maven 中引入依赖:

<dependency>  <groupId>info.picocli</groupId>  <artifactId>picocli</artifactId>  <version>4.7.0</version></dependency>
复制代码


定义命令行参数:

package com.ice.impl;
import com.ice.Parameter;import lombok.Getter;import picocli.CommandLine;
import java.util.Map;
@Getterpublic class PicocliParameter implements Parameter { @CommandLine.Option(names = {"-h", "--help"}, description = "输出帮助信息") private boolean help;
@CommandLine.Option(names = {"-t", "--thread"}, description = "并发数", required = true) private int thread;
@CommandLine.Option(names = {"-c", "--count"}, description = "调用次数", required = true) private int count;
@CommandLine.Option(names = {"-s", "--second"}, description = "调用时长:单位秒", required = true) private int second;
@CommandLine.Option(names = {"-p", "--property"}, description = "自定义扩展属性", type = {String.class, String.class}) private Map<String, String> property;
@CommandLine.Option(names = {"-o", "--output"}, description = "结果输出到文件中") private int output;}
复制代码


解析执行:

package com.ice.impl;
import com.ice.Parameter;import com.ice.Starter;import picocli.CommandLine;
public class PicocliStarter extends Starter { public PicocliStarter(String[] args) { super(args); }
public Parameter parse() { PicocliParameter parameter = new PicocliParameter(); CommandLine commandLine = new CommandLine(parameter); commandLine.parseArgs(args); return parameter; }
public static void main(String[] args) { Starter starter = new PicocliStarter(args); starter.run(); }}
复制代码


总结:基于注解方式声明命令行参数清晰明了,集成代码编写起来更加简单,但是 Picocli 的编码风格不太推崇,CommandLine 内部定义了大量的类,几乎所有的功能 CommandLine 类都实现了,该类居然有 1.9 万行的代码,我不禁要问后续代码容易维护吗?


发布于: 21 分钟前阅读数: 7
用户头像

分享技术上的点点滴滴! 2013-08-06 加入

一杯咖啡,一首老歌,一段代码,欢迎做客冰屋。

评论

发布
暂无评论
Java 命令行参数解析方式探索(三):Picocli_Java_冰心的小屋_InfoQ写作社区