scala解析命令行参数

如何用scala解析命令行参数:

首先,需要在项目中添加Apache Commons CLI库的依赖。可以在build.sbt文件中添加如下行:

libraryDependencies += "commons-cli" % "commons-cli" % "1.4"

Scala 复制代码
import org.apache.commons.cli.{Options, CommandLineParser, DefaultParser, HelpFormatter, ParseException}

object CommandLineParserExample {

  def main(args: Array[String]): Unit = {
    // 创建Options对象,用于存储命令行选项
    val options = new Options()
    options.addOption("h", "help", false, "显示帮助信息")
    options.addOption("f", "file", true, "指定文件路径")

    // 创建命令行解析器
    val parser: CommandLineParser = new DefaultParser()

    try {
      // 解析命令行参数
      val cmd = parser.parse(options, args)

      // 检查是否包含帮助选项
      if (cmd.hasOption("h")) {
        printHelp(options)
      } else {
        // 获取文件路径选项的值
        val filePath = cmd.getOptionValue("f")
        println(s"指定的文件路径是:$filePath")
      }
    } catch {
      case e: ParseException =>
        println(s"解析命令行参数时发生错误:${e.getMessage}")
        printHelp(options)
    }
  }

  // 显示帮助信息
  def printHelp(options: Options): Unit = {
    val formatter = new HelpFormatter()
    formatter.printHelp("CommandLineParserExample", options)
  }
}
相关推荐
神奇小汤圆2 小时前
接口响应慢到崩溃?CompletableFuture 并行编排让效率提升 3 倍
后端
程序员cxuan2 小时前
GPT-5.6 还不发布?不过大家可以先看看 Codex 的白皮书。
人工智能·后端·程序员
妙码生花2 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(八):设计管理员模型、热重载配置
前端·后端·go
ServBay2 小时前
拒绝当二等公民,Windows 开发者如何无痛开启 Claude Code 本地全栈运维?
后端·ai编程·mcp
用户34232323763172 小时前
从数据源到仪表盘——全链路端到端实战整合
后端
Apifox3 小时前
从 Postman 迁移到 Apifox:Workspace、Collection、Environment 现在可以一起导入了
前端·后端·程序员
用户7713970207064 小时前
深入解析 C# Path.ChangeExtension:原来改扩展名可以这么简单
后端
zimoyin4 小时前
深入理解 Kotlin 协程:从零实现一个 IO 优先 + 虚拟线程溢出的混合调度器
后端
雨落倾城夏未凉4 小时前
第四章c#方法-参数数组和可选参数(16)
后端·c#