Groovy Goodness: Running Scripts from a JAR Archive
Join the DZone community and get the full member experience.
Join For FreeWe 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 thejar:
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
Published at DZone with permission of Dustin Marx, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments