Parsing the command line in jenkins-cli groovy scripts
<p>I have written a groovy script to collect some statistics from my Jenkins server, which works ok in the default case. 
However, when I want to pass options to it, I am getting trouble:</p>

<p>(1) The standard groovy CliBuilder exists, but fails to instantiate under jenkins-cli:</p>

<pre><code>import jenkins.model.*
import groovy.util.CliBuilder
println("CliBuilder imported; calling constructor...")
def cli = new CliBuilder(usage: 'myscript.groovy [-halr] [name]')
</code></pre>

<p>results in</p>

<pre><code>$ java -jar "jenkins-cli.jar" -s https://myjenkins1/ groovy myscript.groovy
CliBuilder imported; calling constructor...

ERROR: Unexpected exception occurred while performing groovy command.
java.lang.NoClassDefFoundError: org/apache/commons/cli/ParseException
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:195)
    at RemoteClass.class$(RemoteClass)
    at RemoteClass.$get$$class$groovy$util$CliBuilder(RemoteClass)
    at RemoteClass.run(RemoteClass:4)
    at groovy.lang.GroovyShell.runScriptOrMainOrTestOrRunnable(GroovyShell.java:266)
....
</code></pre>

<p>(2) the options starting with a dash are intercepted by jenkins-cli, instead of passing it to the script</p>

<pre><code>$ java -jar "jenkins-cli.jar" -s https://myjenkins/ groovy ./myscript.groovy -h
ERROR: "-h" is not a valid option
java -jar jenkins-cli.jar groovy [SCRIPT] [ARGUMENTS ...] [--username VAL] [--password VAL] [--password-file VAL]
Executes the specified Groovy script.
 SCRIPT              : Script to be executed. File, URL or '=' to represent
                       stdin.
 ARGUMENTS           : Command line arguments to pass into script.
 --username VAL      : User name to authenticate yourself to Jenkins
 --password VAL      : Password for authentication. Note that passing a
                       password in arguments is insecure.
 --password-file VAL : File that contains the password
</code></pre>

<p>Does it mean that the jenkins-cli groovy interface is meant only for simple tasks and should not handle complicated command lines?
Or are these known caveats with known workarounds?</p>