We can run Groovy scripts from the command-line with the groovy command followed by the name of Groovy script file. We could already run script with the http: protocol as described in this blog post. Since Groovy 2.1 we can even run scripts that are packaged in an archive with the jar: protocol.
Let's create first a simple Groovy script and package it in a sample.jar file.
// File: cookies.groovy
println 'Running from inside a JAR: '
def cookies = ['Cookie', 'Biscuit'].collect { it.toUpperCase() }.join(',')
println cookies
We can use the jar command to place the file cookies.groovy in sample.jar:
$ jar cvf sample.jar cookies.groovy
added manifest
adding: cookies.groovy(in = 153) (out= 126)(deflated 17%)
$ jar tvf sample.jar
0 Fri Sep 06 14:50:24 CEST 2013 META-INF/
68 Fri Sep 06 14:50:24 CEST 2013 META-INF/MANIFEST.MF
153 Fri Sep 06 14:48:44 CEST 2013 cookies.groovy
$
We now have a single Groovy script, but we can place more scripts inside the JAR file if we want to. To run a specific Groovy script file we must use the jar: protocol. We must specify the location of the JAR file with the file: or http: protocols followed by !/. In some shells the ! symbol is a special character and we might need to escape it. For example on Mac OSX we need to invoke the following command to run our script placed in the JAR file:
$ groovy jar:file:sample.jar'!'/cookies.groovy Running from inside a JAR: COOKIE,BISCUIT
We can place the JAR file on a web server and use the jar:http://<address>/sample.jar!/cookies.groovy syntax to run the scripts remotely.
Code written with Groovy 2.1.6