bundler support for jars for jruby
Manage jar dependencies similar to how bundler manages gem dependencies:
differences compared to bundler
bundle installfirst if any of the gems have jar dependencies.
jbundle helpon the possible options and how to update a single jar, etc.
Install JBundler with:
bash jruby -S gem install jbundler
First, create a Jarfile, something like:
bash jar 'org.yaml:snakeyaml', '1.14' jar 'org.slf4j:slf4j-simple', '>1.1'
Install jar dependencies
bash jruby -S jbundle install
Loading the jar files
bash require 'jbundler'
It will add all the jar dependencies in the java classpath from the
For adding a maven repository see Jarfile.
Running the integration test
./mvnw verify ./mvnw clean verify
or a single integration test
bash ./mvnw verify -Dinvoker.test=running_rspec_via_rake ./mvnw clean verify -Dinvoker.test=running_rspec_via_rake
Building the gem (see ./pkg)
bash ./mvnw package -Dinvoker.skip
bash gem build jbundler.gemspec
Here is an example usage of the AliasEvent class from the snakeyaml package
#test_file.rb require 'jbundler' require 'java'
class TestClass def my_method puts AliasEvent.methods end end
Since the version resolution happens in two steps - first the gems, and then the jars/poms - it is possible in case of a failure that there is a valid gems/jars version resolution which satisfies all version contraints. So there is plenty of space for improvements (like maven could resolve the gems as well, etc).
The whole project actually started with a controversial discussion on a pull request on bundler. This very same pull request were the starting point of that project here. Probably by now there is not much left of the original code, but many thanks to ANithian for giving the seed of that project.
Almost all code is under the MIT license but the java class (AetherSettings.java)[https://github.com/mkristian/jbundler/blob/master/src/main/java/jbundler/AetherSettings.java] which was derived from EPL licensed code.
git checkout -b my-new-feature)
git commit -am 'Added some feature')
git push origin my-new-feature)