Commandline основан на аннотациях, позволяет создавать сложные правила для объединения аргументов (последовательностей, вложенности, аргументов, типов, ...) и достаточно хорошо документирован.
Чтобы использовать его, добавьте
<dependency>
<groupId>com.github.jankroken</groupId>
<artifactId>commandline</artifactId>
<version>1.7.0</version>
</dependency>
к вашему ПОМ, и объявить доступные параметры следующим образом:
public class CommandOptions {
private List<String> commands = null;
private boolean parameter = false;
private boolean url = true;
private boolean help = false;
@LooseArguments
public void setCommands(List<String> commands) {
this.commands = commands;
}
@LongSwitch("parameter")
@Toggle(true)
public void setParameter(boolean parameter) {
this.parameter=parameter;
}
@LongSwitch("noURL")
@Toggle(false)
public void setUrl(boolean url) {
this.url = url;
}
@longSwitch("help")
@Toggle(true)
public void setHelp(boolean help) {
this.help = help;
}
// getters
}
, а затем на самом деле разобрать командную строку, сделайте
public final static void main(String[] args) {
try {
CommandOptions options = CommandLineParser.parse(CommandOptions.class, args, OptionStyle.SIMPLE);
// and then you can pass options to your application logic...
} catch
...
}
}
Обратите внимание, что он еще не содержит автоматически сгенерированный текст справки. Это было прототипировано, но прервано. Легко создать базовый текст справки для простых случаев, но для более сложных конфигураций (ae доступные параметры для приложения, такие как «find» или «gcc»), результат будет не очень приятным, и вы скорее всего захотите самостоятельно контролируйте макет.
Близко связанный старый вопрос: http://stackoverflow.com/questions/435740/are-there-good-java-libraries-that-facilitate-building-command-line-applications – Jonik
Возможный дубликат [Есть ли хорошие синтаксический анализатор командной строки для Java?] (http://stackoverflow.com/questions/367706/is-there-a-good-command-line-argument-parser-for-java) –
Это хороший вопрос, который заслуживает быть на http://softwarerecs.stackexchange.com/. –