2010-07-22 15 views
23

Do parsowania linii poleceń w Javie używam zazwyczaj Apache Commons CLI. Czy ktoś może polecić alternatywne biblioteki?Analiza wiersza polecenia: Alternatywne rozwiązania CLI?

+7

Jeśli masz zamiar poprosić o alternatywę dla tego, z czego zwykle korzystasz, dobrze byłoby powiedzieć, czego szukasz, czego nie oferuje standardowa opcja. –

+1

Szczerze mówiąc, nie brałem pod uwagę konkretnej brakującej funkcji. To prawda, że ​​Apache Commons CLI jest "wypróbowany i przetestowany", ale jest również dość gadatliwy. Zastanawiałem się tylko, czy ktoś wprowadził jakieś nowe pomysły w tej dziedzinie. W tej kategorii, myślę, że przyjrzę się bliżej sugestii JCommander poniżej. – Jan

+6

możliwy duplikat [Czy istnieje dobry analizator argumentów linii poleceń dla Java?] (Http://stackoverflow.com/questions/367706/is-there-a-good-command-line-argument-parser-for-java) –

Odpowiedz

21

JCommander brzmi bardzo proste i ciekawe podejście do analizowania argumentów wiersza poleceń z adnotacjami (od twórcy TestNG):

Ty opisywanie pola z opisami opcji:

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; 
} 

a potem po prostu poprosić JCommander do analizowania:

JCommanderTest jct = new JCommanderTest(); 
String[] argv = { "-log", "2", "-groups", "unit", "a", "b", "c" }; 
new JCommander(jct, argv); 

Assert.assertEquals(jct.verbose.intValue(), 2); 
+0

Tak przedstawił go Cederic: http://beust.com/weblog/2010/07/13/announcing-jcommander-1-0/ – Jan

+0

Nie można znaleźć interfejsu API do wydrukowania pomocy. Zobacz powiązane pytanie: http://stackoverflow.com/questions/30046171/how-to-print-help-using-jcommander –

+0

JCommander jest teraz tutaj http://jcommander.org/ – xamde

6
+0

Doceniam te linki do alternatywnych ram i muszę przyznać, że nie zauważyłem tego bardzo podobnego pytania.Miałem jednak nadzieję dotrzeć do kogoś, kto * faktycznie wypróbował * różne alternatywy i kto jest w stanie * polecić * jedną z nich. – Jan

+0

W odniesieniu do tego rodzaju artykułu, którego szukałem: http://furiouspurpose.blogspot.com/2008/07/command-line-parsing-libraries-for-java.html Dziękujemy! – Jan

2

Na java-source.net można znaleźć co najmniej 4 innych alternatywnych bibliotek Apache Commons CLI.

0

getopt-1.0.11 jest prosty łatwy w użyciu lekkiego biblioteki użyłem raz arguements wiersza polecenia parsowania

4

Osobiście korzystam args4J kohsuke pod adresem https://github.com/kohsuke/args4j

+0

To także moje osobiste preferencje. args4j jest bardziej elastyczny niż JCommander. Zasady są takie same, ale jest bardziej intuicyjny w użyciu i rozróżniania między argumentami i opcjami. –

0

Można spróbować commandline (nazwa dość anonimowy, wiem)

wykorzystuje adnotacje do map argumenty wiersza polecenia do modelu obiektowego. Kilka trybów analizowania i zestaw adnotacji, które można łączyć na różne sposoby, pozwala utworzyć całkiem zaawansowane reguły opcji wiersza poleceń.

Chociaż pozwala mapować argumenty wiersza poleceń bezpośrednio na model domeny, , należy rozważyć użycie oddzielnych klas dla argumentów wiersza poleceń.

Powiązane problemy