Существуют ли хорошие библиотеки Java, которые облегчают создание приложений с командной строкой?

Мне нужно написать простое приложение командной строки в Java. Было бы неплохо использовать библиотеку, которая заботится о командах синтаксического анализа и заботится о таких вещах, как флаги и необязательные/обязательные параметры...

UPDATE

Что-то, что имеет встроенное завершение TAB, будет особенно велико.

Ответы

Ответ 1

Я использовал Apache Commons CLI library для анализа аргументов командной строки. Он довольно прост в использовании и имеет достаточно хорошую документацию.

Какая выбранная вами библиотека, вероятно, сводится к тому типу опций, которые вы предпочитаете ( "--gnu-style" или "-javac-style" ).

Обновление: picocli TAB завершение недавно стало доступно и может представлять интерес. Не известно о какой-либо другой библиотеке синтаксического анализа командной строки, которая обеспечивает завершение командной строки, запрошенную в OP.

Ответ 2

JLine выглядит полезным.

JLine - это библиотека Java для обработки ввода в консоль. Он похож по функциональности на BSD editline и GNU readline. Люди, знакомые с возможностями readline/editline для современных оболочек (например, bash и tcsh), найдут большинство функций редактирования команд JLine, чтобы они были знакомы.

И это завершает вкладку вкладки в функции.  

Ответ 3

Когда вы ищете библиотеку, которая облегчает разработку интерактивного приложения оболочки, я предлагаю Cliche.

Ответ 4

Посмотрите arg4j.

Ответ 5

В нашей компании мы используем JewelCli, который использует определение аннотированного интерфейса Java для описания интерфейса командной строки в декларативном стиле.

Легкий и простой в использовании, я рекомендую его.

Ответ 6

Я использовал Java Simple Argument Parser. Он обрабатывает всевозможные типы опций, имеет хорошо продуманную и библиотеку (включая возможность писать собственные парсеры) и обеспечивает хорошую документацию как в JavaDocs, так и онлайн.

Я думаю, что ваше желание заполнения вкладки будет рассмотрено оболочкой, а не библиотекой разбора командной строки.

Ответ 7

Существует Java-порт библиотеки GNU getopt для синтаксического анализа командной строки. Для редактирования команды и завершения TAB существует JLine (как уже указывали mmyers).

Ответ 8

Я использовал JSAP. Я нашел его стабильным и хорошо документированным.

Я не уверен, что понимаю, что вы подразумеваете под "встроенным завершением TAB". Вы можете уточнить.

Ответ 9

Также стоит посмотреть - jopt-simple.

Он пытается соблюдать синтаксисы опций командной строки POSIX getopt() и GNU getopt_long(). ' Кажется, что у него какое-то отношение к сообществу, в частности, это синтаксический анализ командной строки для OpenJDK.

Кроме того, как упоминал Бретт, завершение табуляции обычно предоставляется вашей оболочкой - вы должны написать функции оболочки, чтобы обеспечить желаемую функциональность.

p.s. Извините за дублированный ответ, но этот вопрос почти идентичен библиотеке Java для анализа параметров командной строки?

Ответ 10

Я попробовал несколько библиотек и в итоге использовал argparse4j. Это действительно хороший Java-порт Python argparse.