Frameworks CLI para Kotlin: Clikt, kotlinx-cli, picocli — visão geral e comparação

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

CLI Frameworks para Kotlin: criando aplicações de console poderosas



Kotlin é uma linguagem moderna que se adequa perfeitamente não apenas para desenvolvimento Android ou servidor, mas também para criar aplicações de console (CLI). Para não escrever a análise de argumentos manualmente, existem frameworks especializados. Neste artigo, analisaremos as três soluções mais populares: Clikt, kotlinx-cli e picocli. Você conhecerá suas características, verá exemplos de código e poderá escolher a ferramenta adequada para seu projeto.



Para que serve um CLI framework?

Criar utilitários de linha de comando é uma tarefa que rapidamente se complica: é necessário processar flags, opções, argumentos posicionais e exibir ajuda. A implementação manual leva a erros e duplicação de código. Os frameworks oferecem mecanismos prontos:

  • Descrição declarativa da interface de comandos
  • Geração automática de ajuda (--help)
  • Validação de entrada
  • Suporte a subcomandos (estilo git)
  • Type safety


1. Clikt — o framework mais "kotlinístico"

Clikt (https://github.com/ajalt/clikt) é uma biblioteca pura Kotlin que usa DSL e propriedades delegadas. Ela não depende de anotações Java e oferece uma API intuitiva.



Instalação

// build.gradle.ktsimplementation("com.github.ajalt.clikt:clikt:4.2.2")


Exemplo: calculadora simples

import com.github.ajalt.clikt.core.CliktCommandimport com.github.ajalt.clikt.parameters.arguments.argumentimport com.github.ajalt.clikt.parameters.options.optionimport com.github.ajalt.clikt.parameters.types.int

class Calc : CliktCommand() { val a: Int by argument() val b: Int by argument() val multiply by option("--mult", "-m", help = "Multiplicar, em vez de somar").flag()

override fun run() { val result = if (multiply) a * b else a + b echo("Resultado: $result") }}

fun main(args: Array<String>) = Calc().main(args)


Execução: kotlin calc 5 3 --mult → Resultado: 15.



Vantagens do Clikt:

  • Integração completa com Kotlin (DSL, delegados)
  • Sistema de validação poderoso (custom validators)
  • Suporte a subcomandos de qualquer profundidade
  • Geração automática de páginas man
  • Comunidade ativa e atualizações


2. kotlinx-cli — solução leve da JetBrains

kotlinx-cli é uma biblioteca experimental que faz parte do ecossistema Kotlin. Ela é minimalista e adequada para utilitários pequenos.



Instalação

// build.gradle.ktsimplementation("org.jetbrains.kotlinx:kotlinx-cli:0.3.6")


Exemplo: saudação

import kotlinx.cli.*

fun main(args: Array<String>) { val parser = ArgParser("greet") val name by parser.option(ArgType.String, shortName = "n", description = "Nome") .default("mundo") val times by parser.option(ArgType.Int, shortName = "t", description = "Número de vezes") .default(1)

parser.parse(args)

repeat(times) { println("Olá, $name!") }}


Execução: kotlin greet -n Kotlin -t 2 → Olá, Kotlin! (duas vezes).



Características do kotlinx-cli:

  • API muito simples — mínimo de código
  • Suporte a tipos básicos (String, Int, Boolean)
  • Não é adequado para hierarquias de comandos complexas
  • Status experimental (API pode mudar)
  • Sem validação integrada e dicas


3. picocli — framework poderoso com raízes Java

picocli é um framework popular que funciona tanto com Java quanto com Kotlin. Ele usa anotações, mas possui suporte especial para Kotlin DSL.

Recommendations