1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
# jruby jar extension
it packs a ruby application as runnable jar, i.e. all the ruby code and the gems and jars (which ruby loads via require) are packed inside the jar. the jar will include jruby-complete and jruby-mains to execute the ruby application via, i.e.
java -jar my.jar -S rake
the extension uses the mojos from [../jruby9-jar-maven-plugin](jruby9-jar-maven-plugin)
## general command line switches
to see the java/jruby command the plugin is executing use (for example with the verify goal)
```mvn verify -Djruby.verbose```
to quickly pick another jruby version use
```mvn verify -Djruby.version=1.7.20```
or to display some help
```mvn jruby9-jar:help -Ddetail```
```mvn jruby9-jar:help -Ddetail -Dgoal=jar```
## jruby jar
it installs all the declared gems and jars from the dependencies section as well the plugin dependencies.
the complete pom for the samples below is in [src/it/jrubyJarExample/pom.xml](src/it/jrubyJarExample/pom.xml) and more details on how it can be executed.
the extension is used by declaring the right packaging
<packaging>jrubyJar</packaging>
the gem-artifacts are coming from the torquebox rubygems proxy
<repositories>
<repository>
<id>rubygems-releases</id>
<url>http://rubygems-proxy.torquebox.org/releases</url>
</repository>
</repositories>
to use these gems within the depenencies of the plugin you need
<pluginRepositories>
<pluginRepository>
<id>rubygems-releases</id>
<url>http://rubygems-proxy.torquebox.org/releases</url>
</pluginRepository>
</pluginRepositories>
the jar and gem artifacts for the JRuby application can be declared in the main dependencies section
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.6</version>
</dependency>
<dependency>
<groupId>rubygems</groupId>
<artifactId>leafy-rack</artifactId>
<version>0.4.0</version>
<type>gem</type>
</dependency>
<dependency>
<groupId>rubygems</groupId>
<artifactId>minitest</artifactId>
<version>5.7.0</version>
<type>gem</type>
</dependency>
</dependencies>
these artifacts ALL have the default scope which gets packed into the jar.
adding ruby resources to your jar
<build>
<resources>
<resource>
<directory>${basedir}</directory>
<includes>
<include>test.rb</include>
<include>spec/**</include>
</includes>
</resource>
</resources>
and pick the extension
<extensions>
<extension>
<groupId>de.saumya.mojo</groupId>
<artifactId>jruby9-jar-extension</artifactId>
<version>@project.version@</version>
</extension>
</extensions>
</build>
|