Один из способов добиться этого - показать ошибку, если команда верхнего уровня вызывается без подкоманды.
Например:
@Command(name = "top", subcommands = {Sub1.class, Sub2.class})
class TopCommand implements Runnable {
public void run() {
System.err.println("Please invoke a subcommand");
new CommandLine(this).usage();
}
public static void main(String[] args) {
CommandLine.run(new TopCommand(), args);
}
}
@Command(name = "sub1)
class Sub1 implements Runnable {
public void run() {
System.out.println("All good, executing Sub1");
}
}
@Command(name = "sub2)
class Sub2 implements Runnable {
public void run() {
System.out.println("All good, executing Sub2");
}
}