Java:使用JCommander解析命令行参数

这篇具有很好参考价值的文章主要介绍了Java:使用JCommander解析命令行参数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

JCommander is a very small Java framework that makes it trivial to parse command line parameters.

译文:JCommander是一个非常小的Java框架,它使得解析命令行参数变得微不足道。

相关资料

  • 文档: https://jcommander.org/
  • github: http://github.com/cbeust/jcommander

依赖

<!-- https://mvnrepository.com/artifact/com.beust/jcommander -->
<dependency>
    <groupId>com.beust</groupId>
    <artifactId>jcommander</artifactId>
    <version>1.82</version>
</dependency>

完整 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.example</groupId>
    <artifactId>cmd-demo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <packaging>jar</packaging>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/com.beust/jcommander -->
        <dependency>
            <groupId>com.beust</groupId>
            <artifactId>jcommander</artifactId>
            <version>1.82</version>
        </dependency>
    </dependencies>

    <build>
        <finalName>app</finalName>

        <plugins>
            <!-- 跳过测试 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>

            <!-- jar -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <archive>
                        <!-- 生成的jar中不要包含pom.xml和pom.properties这两个文件 -->
                        <addMavenDescriptor>false</addMavenDescriptor>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <!--项目的启动类-->
                            <mainClass>com.example.Demo</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

            <!-- 依赖 dependencies -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-lib</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                            <includeScope>runtime</includeScope>
                            <useBaseVersion>true</useBaseVersion>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

定义参数

package com.example;

import com.beust.jcommander.Parameter;

public class CommandOptions {
    @Parameter(names = {"--name", "-n"},
            description = "用户姓名")
    private String name;

    public String getName() {
        return name;
    }
}

入口

package com.example;

import com.beust.jcommander.JCommander;

public class Demo {
    public static void main(String[] args) {

        CommandOptions commandOptions = new CommandOptions();
        JCommander commander = JCommander.newBuilder()
                .addObject(commandOptions)
                .build();

        // 解析参数
        commander.parse(args);

        System.out.println(commandOptions.getName());
    }
}

# 打包
$ mvn clean package

# 执行
$ java -jar target/app.jar --name Tom
Tom

$ java -jar target/app.jar -n Tom
Tom

参考文章来源地址https://www.toymoban.com/news/detail-506807.html

  1. 使用 JCommander 解析命令行参数
  2. 使用 Maven 生成 Jar 文件的三种方式

到了这里,关于Java:使用JCommander解析命令行参数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 3分钟上手Python的命令行参数解析

    1 简介 处理命令行参数对许多程序来说都是必不可少的功能。今天为大家介绍 Python 中的 argparse 模块,它是 Python 标准库中的一个模块,它可以让开发者非常简单地为程序添加命令行参数接口,包括位置参数、可选参数、标志等,并自动生成帮助信息。 2 底层原理 argparse 模块

    2024年02月10日
    浏览(41)
  • 【小知识】argparse --- 命令行选项、参数和子命令解析器详解

    argparse模块提供了非常方便的命令行参数解析功能,能够大大简化命令行程序的开发。 现在的大型项目中都会运用argparse来管理项目中涉及的参数,在使用命令行时更好地定义模型参数。 搜索得到的参数解释都不是很清楚所以做个总结。 argparse定义四个步骤: 1.导入argparse包

    2024年02月03日
    浏览(37)
  • 【教程科普】带命令行参数解析的C程序到底怎么写?

    带命令行参数解析的C程序到底怎么写? 最近工作上,遇到这样一个问题:我需要写一个C语言的程序,这个程序要求带命令行输入,之前有了解一些这方面的知识,本文将带大家好好梳理一下,希望对大家有所帮助。 最近工作上,遇到这样一个问题:我需要写一个C语言的程

    2024年02月01日
    浏览(36)
  • 【Linux 】getopts 可选参数_Bash技巧:介绍 getopts 内置命令解析选项参数的用法

    在 Linux bash shell 中,内置了一个 getopts 命令,可以处理以 ‘-’ 开头的选项参数。本篇文章通过多个实例详解 getopts 命令的用法。 getopts 命令简介 在 bash shell 上执行命令,常常会用到一些选项参数来指定不同的操作。例如 ls 命令的 -l、-a 选项等。 我们在编写 shell 脚本时,也

    2024年02月07日
    浏览(39)
  • 从零开始用Rust编写nginx,命令行参数的设计与解析及说明

    wmproxy 已用 Rust 实现 http/https 代理,  socks5 代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现 websocket 代理等,会将实现过程分享出来,感兴趣的可以一起造个轮子 国内: https://gitee.com/tickbh/wmproxy github: https://github.com/tickbh/wmproxy 设计目标

    2024年01月25日
    浏览(38)
  • scalpel一款命令行漏洞扫描工具,支持深度参数注入,拥有一个强大的数据解析和变异算法

    免责声明 由于传播、利用本文章所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!所有工具安全性自测!!! 工具介绍 scalpel是一款

    2024年01月19日
    浏览(44)
  • dsdgen命令 的用法,定义,命令参数详解,以及使用案例

    当下随着数据量不断增长,数据仓库的性能和扩展性成为了关键的课题。为了解决这一问题,需要对数据仓库进行性能测试。TPC-DS(Test Performance Council Decision Support)是一款用于数据仓库基准测试的测试套件,包含了针对数据仓库的45种负载。dsdgen命令是TPC-DS数据生成器的一部分

    2024年02月09日
    浏览(39)
  • 003 第一季SpringBoot2核心技术-核心功能2:数据访问、单元测试、指标监控、原理解析:@Value、命令行参数、手动获取bean、自定义starter

    说明 :在SpringBoot中想要操作数据库完成增删改差,按照以往的经验: 原理 : 首先 导入数据开发的场景starter(依赖)---- 这个场景会又会自动导入数据库相关的配置类---- 这个配置类又会导入相关的组件,如:数据源----》 数据源组件中又有相关的数据库配置项:用户名、密码

    2024年01月22日
    浏览(40)
  • Linux——使用命令行参数管理环境变量

    目录 使用命令行参数获取用户在DOS命令行输入的指令:         方法:代码如下: 使用命令行参数获取并打印部分或者整体环境变量的方法:  方法1:  运行结果: 方法2:使用外部链接environ:         方法:代码如下:    上方代码解析:          argc : 命令行传

    2024年02月07日
    浏览(43)
  • 57个Linux常用命令含参数介绍和使用示例

    点击下载《57个Linux常用命令含参数介绍和使用示例》 作用:显示当前所在的工作目录的全路径名称 该命令无需任何参数,只需在终端窗口中输入 pwd 命令即可使用。 作用:更改当前工作目录。 该命令需要一个参数:目标目录名称。 作用:列出指定目录中的文件和子目录名

    2024年02月03日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包