Skip to content
bundler support for jars for jruby
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.mvn switch to polyglot maven Sep 7, 2015
bin add missing bin/jbundle Sep 4, 2015
integration bump version Apr 8, 2016
lib fixed generated file during vendoring Dec 1, 2015
spec fix new settings resoultion and give preference to $PWD/settings.xml Dec 1, 2015
.gitignore
.travis.yml use new travis Dec 1, 2015
Gemfile * get the system jars into jbundle Nov 25, 2014
Jarfile
MIT-LICENSE
Mavenfile new versions Dec 1, 2015
Rakefile back to green tests Sep 7, 2015
Readme.md add example usage and fix markdown formatting May 15, 2018
jbundler.gemspec
mvnw
mvnw.bat switch to polyglot maven Sep 7, 2015

Readme.md

jbundler

  • Build Status

Manage jar dependencies similar to how bundler manages gem dependencies:

  • the DSL mimics the one from bundler
  • you can use maven-like version declarations or rubygems/bundler version ranges
  • it locks down the jar versions inside "Jarfile.lock"
  • you can declare jar dependencies within a gem using the requirements directive of the gem specification. jbundler will include those jar dependencies into its classpath

differences compared to bundler

  • you need to run bundle install first if any of the gems have jar dependencies.
  • all one command jbundle, see jbundle help on the possible options and how to update a single jar, etc.

Get started

Install JBundler with:

jruby -S gem install jbundler

First, create a Jarfile, something like:

jar 'org.yaml:snakeyaml', '1.14'
jar 'org.slf4j:slf4j-simple', '>1.1'

Install jar dependencies

jruby -S jbundle install

Loading the jar files

require 'jbundler'

It will add all the jar dependencies in the java classpath from the Jarfile.lock.

Jarfile

More info about the Jarfile and about versions.

For adding a maven repository see Jarfile.

Building the jbundler gem

Running the integration test

./mvnw verify

Building the gem (see ./pkg)

./mvnw package -Dinvoker.skip

Or just

gem build jbundler.gemspec

Usage

Here is an example usage of the AliasEvent class from the snakeyaml package

#test_file.rb
require 'jbundler'
require 'java'

java_import 'org.yaml.snakeyaml.events.AliasEvent'

class TestClass
  def my_method
    puts AliasEvent.methods
  end
end

TestClass.new.my_method

Limitations

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

Special thanks

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.

License

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.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Meta-fu

enjoy :)

You can’t perform that action at this time.