当前位置: 首页 > news >正文

Picocli 命令行框架

官方文档
https://picocli.info/
官方提供的快速入门教程
https://picocli.info/quick-guide.html

使用 Picocli 创建命令行应用程序

Picocli 是一个用于构建 Java 命令行应用的强大框架,它简化了参数解析和帮助消息生成的过程。
下面是如何使用 Picocli 构建简单命令行程序的方法。

安装依赖项

对于 Maven 用户来说,可以在 pom.xml 文件里加入如下配置

<!-- https://picocli.info -->
<dependency><groupId>info.picocli</groupId><artifactId>picocli</artifactId><version>4.7.5</version>
</dependency>

编写主类

import picocli.CommandLine;
import picocli.CommandLine.Command;
import picocli.CommandLine.Option;
import picocli.CommandLine.Parameters;
// some exports omitted for the sake of brevity@Command(name = "ASCIIArt", version = "ASCIIArt 1.0", mixinStandardHelpOptions = true) 
public class ASCIIArt implements Runnable { @Option(names = { "-s", "--font-size" }, description = "Font size") int fontSize = 19;@Parameters(paramLabel = "<word>", defaultValue = "Hello, picocli", description = "Words to be translated into ASCII art.")private String[] words = { "Hello,", "picocli" }; @Overridepublic void run() { // The business logic of the command goes here...// In this case, code for generation of ASCII art graphics// (omitted for the sake of brevity).}public static void main(String[] args) {int exitCode = new CommandLine(new ASCIIArt()).execute(args); System.exit(exitCode); }
}
  • 创建一个实现 Runnable 或 callable 的类。这是您的命令。
  • 为类添加 @command 注解并为其命名。mixinstandardHelpOptions 属性将 --help 和 --version 选项添加到您的应用程序中。
  • 对于应用程序中的每个选项,添加 @Option 注解。此示例显示了如何为选项提供名称和描述,还有许多其他属性。
  • 对于每个位置的参数,添加 @Parameters 注解。
  • Picocli 会将命令行参数转换为强类型值,并将这些值注入到带注解的字段中。
  • 在类的 run 或者 call 方法中定义业务逻辑。解析成功完成后,将调用该方法。
  • 在类的main 方法中,使用方法CommandLine.execute 执行程序。 这将解析命令行、处理错误、处理使用和版本帮助请求,并调用业务逻辑。
  • CommandLine.execute System.exit 方法返回退出代码。您的应用程序可以使用此退出代码进行调用,以向调用进程发出成功或失败的信号。

http://www.mrgr.cn/news/83537.html

相关文章:

  • 编程题-二分查找
  • 【AI自动化渗透】大模型支持的自动化渗透测试,看蚂蚁和浙大的
  • 在线或离线llama.cpp安装和模型启动
  • Domain Adaptation(李宏毅)机器学习 2023 Spring HW11 (Boss Baseline)
  • 【python基础】python内置函数 zip用法介绍
  • css面试常考布局(圣杯布局、双飞翼布局、三栏布局、两栏布局、三角形)
  • Virsh虚拟机连接校园网
  • Elasticsearch:使用 Playground 与你的 PDF 聊天
  • 51c~Pytorch~合集5
  • 宝塔面板 php8.0 安装 fileinfo 拓展失败
  • 继续以“实用”指导Pythonic编码(re通配表达式)(2024年终总结2)
  • Android系统定制APP开发_如何对应用进行系统签名
  • LeetCode热题100-环形链表【JavaScript讲解】
  • 补种未成活胡杨
  • 对话新晋 Apache SeaTunnel Committer:张圣航的开源之路与技术洞察
  • HarmonyOS Next系列之华为账号一键登录功能实现(十四)
  • shell脚本回顾1
  • 【Ubuntu 24.04】虚拟机常见问题解决
  • rk3568 内核态OOM内存泄漏memleak使用
  • 分类模型为什么使用交叉熵作为损失函数
  • Spring——几个常用注解
  • mybatis分页插件:PageHelper、mybatis-plus-jsqlparser(解决SQL_SERVER2005连接分页查询OFFSET问题)
  • 【leetcode刷题】:双指针篇(有效三角形的个数、和为s的两个数)
  • 文献阅读分享:XSimGCL - 极简图对比学习在推荐系统中的应用
  • 【大数据】Apache Superset:可视化开源架构
  • PatchTST:通道独立的、切片的 时序 Transformer