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