Over a million developers have joined DZone.

Groovy Goodness: Running Scripts from a JAR Archive

· Java Zone

Check out this 8-step guide to see how you can increase your productivity by skipping slow application redeploys and by implementing application profiling, as you code! Brought to you in partnership with ZeroTurnaround.

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 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

The Java Zone is brought to you in partnership with ZeroTurnaround. Check out this 8-step guide to see how you can increase your productivity by skipping slow application redeploys and by implementing application profiling, as you code!

Topics:

Published at DZone with permission of Dustin Marx, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

The best of DZone straight to your inbox.

SEE AN EXAMPLE
Please provide a valid email address.

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.
Subscribe

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}