Для синтаксического анализа командной строки в Java я обычно использую Apache Commons CLI. Может ли кто-нибудь рекомендовать альтернативные библиотеки?Разбор командной строки: альтернативы CLI Commons?
ответ
JCommander звучит как очень простой и интересный подход к разбору аргументов командной строки с аннотациями (от создателя TestNG):
Вы аннотирования поля с описанием ваших вариантов:
import com.beust.jcommander.Parameter;
public class JCommanderTest {
@Parameter
public List<String> parameters = Lists.newArrayList();
@Parameter(names = { "-log", "-verbose" }, description = "Level of verbosity")
public Integer verbose = 1;
@Parameter(names = "-groups", description = "Comma-separated list of group names to be run")
public String groups;
@Parameter(names = "-debug", description = "Debug mode")
public boolean debug = false;
}
, а затем вы просто спросите JCommander разобрать:
JCommanderTest jct = new JCommanderTest();
String[] argv = { "-log", "2", "-groups", "unit", "a", "b", "c" };
new JCommander(jct, argv);
Assert.assertEquals(jct.verbose.intValue(), 2);
Вот как Cederic представил его: http://beust.com/weblog/2010/07/13/announcing-jcommander-1-0/ – Jan
Не удалось найти API для печати справки. См. Соответствующий вопрос: http://stackoverflow.com/questions/30046171/how-to-print-help-using-jcommander –
JCommander сейчас здесь http://jcommander.org/ – xamde
Помогает ли этот ответ? How to parse command line arguments in Java?
Я ценю эти ссылки на альтернативные рамки, и я должен признать, что я не заметил этого очень похожего вопроса.Тем не менее, я надеялся связаться с кем-то, кто * попробовал * разные альтернативы и кто может * рекомендовать * один из них. – Jan
В отношении, это вид статьи, которую я искал: http://furiouspurpose.blogspot.com/2008/07/command-line-parsing-libraries-for-java.html Спасибо! – Jan
Я вижу несколько перечисленных здесь command line interpreters
В java-source.net вы можете найти по крайней мере 4 других альтернативных библиотек Apache Commons CLI.
Getopt-1.0.11 является простым простым в использовании легкой библиотеки я использовал один раз для командной строки заданы параметров разборе
я использую и как
http://martiansoftware.com/jsap/
его с открытым исходным кодом, простой. Он неактивен, я думаю, что у автора есть другие утюги в огне.
Я лично использую args4J Kohsuke по адресу https://github.com/kohsuke/args4j
Это также мои личные предпочтения. args4j более гибкий, чем JCommander. Принципы одинаковы, но более интуитивно понятно использовать и различать аргументы и опции. –
Вы можете попробовать commandline (довольно анонимное имя, я знаю)
Он использует аннотации к карте аргументы командной строки в объектной модели. Пара разбора режимов и набор аннотаций, которые могут быть объединены различными способами, позволяют создавать довольно продвинутые правила опций командной строки.
Хотя он позволяет сопоставлять аргументы командной строки непосредственно на вашей модели домена, , вам следует рассмотреть возможность использования отдельных классов для аргументов командной строки.
Если вы хотите попросить альтернативу тому, что вы обычно используете, было бы полезно, если бы вы сказали, что вы ищете, что ваш обычный вариант не предоставляет. –
Если честно, у меня не было особой недостающей функции. Правда, Apache Commons CLI «проверен и проверен», но он также довольно подробный. Мне просто интересно, кто-нибудь представил какие-либо новые идеи в этой области. В этой категории, я думаю, я собираюсь более подробно рассмотреть предложение JCommander ниже. – Jan
Возможный дубликат [Есть ли хороший парсер аргументов командной строки для Java?] (Http://stackoverflow.com/questions/367706/is-there-a-good-command-line-argument-parser-for-java) –