It is currently quite cumbersome to define options where later occurrences override previous ones.
For one thing, a CommandLine.getLastOptionValue() would help. But this is easy to implement yourself.
Another pain point are options with optional arguments. Say you have a boolean argument foo that takes an optional argument "true" or "false". If no argument is given, it should be set to true.
To get the correct value for foo, you first have to find the last occurrence of the option, then check if it has a value and then return either the given value or a default (which is likely different from the default value where the option doesn't occur).