jcommander 方便的java 命令行处理工具包
jcommander 是一个方便的java 命令行解析包,使用简单、方便,我们可以在好多开源项目中看到
次工具包的身影,以下是一个简单的使用
环境准备
- 项目结构
├── pom.xml
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── dalong
│ │ └── Application.java
│ └── resources
└── test
└── java
- 代码说明
此项目是一个典型的maven 项目,开发的为flat 模式的java 应用 pom.xml 文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.dalong</groupId>
<artifactId>commander</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<encoding>UTF-8</encoding>
<java.version>1.8</java.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.beust</groupId>
<artifactId>jcommander</artifactId>
<version>1.78</version>
</dependency>
</dependencies>
<build>
<!-- Maven Shade Plugin -->
<finalName>jcommander-app</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<!-- Run shade goal on package phase -->
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<!-- add Main-Class to manifest file -->
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.dalong.Application</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
java 代码 com.dalong.Application.java 使用jcommander 工具包
package com.dalong;
import com.beust.jcommander.JCommander;
import com.beust.jcommander.Parameter;
import com.beust.jcommander.ParameterException;
public class Application {
@Parameter(names={"--length", "-l"},help = true,required =true ,description = "this is length info")
int length;
@Parameter(names={"--pattern", "-p"},help = true,required =true ,description = "this is pattern info")
int pattern;
@Parameter(names = "--help", help = true)
private boolean help;
public static void main(String[] args) {
Application main = new Application();
JCommander jct = JCommander.newBuilder()
.addObject(main)
.build();
jct.setProgramName("demo app");
try {
jct.parse(args);
// 提供帮助说明
if (main.help) {
jct.usage();
return;
}
main.run();
}
catch (ParameterException parameterException ){
// 为了方便使用,同时输出exception的message
System.out.printf(parameterException.toString()+"\r\n");
jct.usage();
}
}
public void run() {
System.out.printf("%d %d", length, pattern);
}
}
使用
- 构建
mvn clean package
- 使用
java -jar target/jcommander-app.jar
- 效果
参考资料
https://github.com/cbeust/jcommander
https://github.com/rongfengliang/jcommander-learning
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2019-01-17 golang 版本 gearman 试用
2019-01-17 jenkins 使用smtp2http 邮件服务,扩展灵活的构建通知功能
2019-01-17 nuxt docker 运行