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)
  }
}
相关推荐
陈随易4 分钟前
TanStarter,从搭建到支付,一步到位开始赚美元
前端·后端·程序员
Rain的Java大神之路5 分钟前
公交App上“还有2站,约5分钟”怎么实现?90%的人答错这道大厂面试题:GPS漂移、ETA不准、10万QPS热点读全拆透(附完整代码)
java·后端·面试
挖掘狂人9 分钟前
MySQL 深分页优化:limit 100000, 10 慢在哪,怎么救
后端·sql·mysql
敲代码的小小酥42 分钟前
谈SpringMVC与Spring WebFlux的区别与适用场景
java·后端·spring
IT_陈寒42 分钟前
Redis开发实战:从入门到精通
前端·人工智能·后端
日日大王学编程1 小时前
2026主流AI Agent产品分类、核心差异与技术特性全解析
人工智能·后端·python
zhanghaha13141 小时前
C# 系列教程_7 判断语句(分支)保姆级精讲
开发语言·c#
apcipot_rain1 小时前
C++转Java日记(02)
java·开发语言·c++
mldong1 小时前
同一个节点接力办几轮,流程才往下走:jeeflow 的后加签
后端·架构
量化分析码农1 小时前
【Python量化多因子实战 03】多因子怎么合成?等权、IC 加权与回归加权实测
后端