Code Monkey home page Code Monkey logo

jbundler's Introduction

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
./mvnw clean verify

or a single integration test

./mvnw verify -Dinvoker.test=running_rspec_via_rake
./mvnw clean verify -Dinvoker.test=running_rspec_via_rake

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

jbundler's People

Contributors

arthurkalm-otpp avatar atambo avatar aviflax avatar camertron avatar cburgmer avatar docwhat avatar ecdemis123 avatar mkristian avatar olleolleolle avatar rmontgomery429 avatar rosenfeld avatar xian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jbundler's Issues

Committing / checking-in a Jarfile.lock when developing a gem?

Not sure where else to ask this question (perhaps StackOverflow, if you don't feel this is the right place).

If I'm developing a gem that will run on JRuby (and use a Jarfile via JBundler), should I not commit to source control the Jarfile.lock just like we do not commit the Gemfile.lock when developing the gem itself?

I am referring to the practice outlined in Yehuda's post here, of course: http://yehudakatz.com/2010/12/16/clarifying-the-roles-of-the-gemspec-and-gemfile/

Just looking for a best practice here for dependencies on Java libraries that are used from a Ruby gem (and perhaps a quick explanation as to why).

UPDATE: Also, same question for the .jbundler/ directory (containing classpath.rb), should that be committed or not?

Thanks.

does not link to system jars correctly

my Jarfile contains:

jar 'org.apache.hbase:hbase-annotations', '=0.98.7-hadoop2'

Which produces a .jbundler/classpath.rb with this line

JBUNDLER_CLASSPATH << (JBUNDLER_LOCAL_REPO + '/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/../lib/tools.jar')

which resolves to a bogus path

Depending on internal dependencies

I'm trying to depend on some internal JARs inside our company, and I've added the internal repository to my Mvnfile, which looks something like this:

repository 'http://internal-repository/url'
jar 'groupId:artifactId', '2.3.5'

bundle install works fine, but when I bundle exec <ruby file>, I get the following:

$ bundle exec <ruby file>
downloading http://repo1.maven.org/maven2//internal_dependency/2.3.5/internal-dependency-2.3.5.pom
artifact downloaded: internal_dependency:pom:2.3.5
downloading http://internal-repository/url
/internal_dependency/2.3.5/internal-dependency-2.3.5.pom
artifact downloaded: internal_dependency:pom:2.3.5
NativeException: org.sonatype.aether.collection.DependencyCollectionException: Failed to collect dependencies for [internal_dependency:jar:2.3.5 (compile)]
  resolve at /home/arthur/.rvm/gems/jruby-1.6.7/gems/jbundler-0.0.1/lib/jbundler/aether.rb:84
   (root) at /home/arthur/.rvm/gems/jruby-1.6.7/gems/jbundler-0.0.1/lib/jbundler.rb:19
  require at org/jruby/RubyKernel.java:1033
  require at /home/arthur/.rvm/gems/jruby-1.6.7/gems/jbundler-0.0.1/lib/jbundler.rb:68
     each at org/jruby/RubyArray.java:1615
  require at /home/arthur/.rvm/gems/jruby-1.6.7@global/gems/bundler-1.1.3/lib/bundler/runtime.rb:66
     each at org/jruby/RubyArray.java:1615
  require at /home/arthur/.rvm/gems/jruby-1.6.7@global/gems/bundler-1.1.3/lib/bundler/runtime.rb:55
  require at /home/arthur/.rvm/gems/jruby-1.6.7@global/gems/bundler-1.1.3/lib/bundler.rb:119
   (root) at call-cews.rb:1

But I can depend on that dependency in Maven fine. I'm also able to install it using maven_gem.

$ gem install mvn:groupId:artifactId --version '=2.3.5'
Successfully installed mvn:groupId:artifactId-2.3.5-java
1 gem installed

Do you know why aether is failing to resolve the dependency? Looking at the source code it looked like putting in the repository line should work.

undefined method classpath_file

I've installed jbundler with

$ jruby -S gem install jbundler
$ jbundle install

the main.rb file starts with:

#!/usr/bin/env jruby

require 'jbundler'
#...

however jbundler fails to load dependencies due to missing method.

$ bundle exec jruby main.rb 
NoMethodError: undefined method `classpath_file' for #<JBundler::Context:0x654f4f73>
  require_jars at /home/deric/.rbenv/versions/jruby-1.7.13/lib/ruby/gems/shared/gems/jbundler-0.6.0/lib/jbundler.rb:66
         setup at /home/deric/.rbenv/versions/jruby-1.7.13/lib/ruby/gems/shared/gems/jbundler-0.6.0/lib/jbundler.rb:82
        (root) at /home/deric/.rbenv/versions/jruby-1.7.13/lib/ruby/gems/shared/gems/jbundler-0.6.0/lib/jbundler.rb:87
       require at org/jruby/RubyKernel.java:1065
        (root) at main.rb:3

am I doing something wrong? I've tried this on rbenv and RVM with same result. A workaround is to install dependencies with jbundle install --vendor

NameError: uninitialized constant JBundler::Thor

Saw this error:

2015-03-31 10:21:12 NameError: uninitialized constant JBundler::Thor
2015-03-31 10:21:12   const_missing at org/jruby/RubyModule.java:2726
2015-03-31 10:21:12        JBundler at /home/jenkins/.rvm/gems/jruby-1.7.18@gerrit_big-echo/gems/jbundler-0.7.2/lib/jbundler/cli.rb:28
2015-03-31 10:21:12          (root) at /home/jenkins/.rvm/gems/jruby-1.7.18@gerrit_big-echo/gems/jbundler-0.7.2/lib/jbundler/cli.rb:27
2015-03-31 10:21:12         require at org/jruby/RubyKernel.java:1071
2015-03-31 10:21:12          (root) at /home/jenkins/.rvm/gems/jruby-1.7.18@gerrit_big-echo/gems/jbundler-0.7.2/bin/jbundle:1
2015-03-31 10:21:12            load at org/jruby/RubyKernel.java:1087
2015-03-31 10:21:12          (root) at /home/jenkins/.rvm/gems/jruby-1.7.18@gerrit_big-echo/gems/jbundler-0.7.2/bin/jbundle:56
2015-03-31 10:21:12            eval at org/jruby/RubyKernel.java:1107
2015-03-31 10:21:12          (root) at /home/jenkins/.rvm/gems/jruby-1.7.18@gerrit_big-echo/bin/jruby_executable_hooks:15
2015-03-31 10:21:13 Build step 'Execute shell' marked build as failure

Full log: https://gist.github.com/xbeta/76daab0cf2dec0dda61f

jbundler ignoring Jarfile.lock?

Hi,

I just started using jbundler-0.6.4 and found a somewhat weird behavior. I have a Jarfile which declared a dependency of something like:

jar 'groupid:artifact, '~> x.y.z'

Now I ran 'jbundle install' which generated a Jarfile.lock a couple of days ago. Now a new version of the lib was published to maven. Irrespective of that, I'd expect, given the Jarfile.lock file, that everytime I run 'jbundle install' the locked down version of the jars would be installed. But it seems like it's always pulling the latest and greatest version from maven meaning it ignores the Jarfile.lock. This can't be the expected behavior?

Error when a locked gem's version differs from one in the system

eg. I have a Gemfile.lock which locks ffi to 1.9.8, but in the system only 1.9.3 is available. When I run jbundle install I get the following error after installing all the gems:

Gem::LoadError: You have already activated ffi 1.9.3, but your Gemfile requires ffi 1.9.8. Prepending `bundle exec` to your command may solve this.
                   setup at {path}/gems/bundler-1.9.1/lib/bundler/runtime.rb:34
                    each at org/jruby/RubyArray.java:1613
                    each at {path}/rubies/jruby-1.7.15/lib/ruby/1.9/forwardable.rb:201
                   setup at {path}/gems/bundler-1.9.1/lib/bundler/runtime.rb:19
                   setup at {path}/gems/bundler-1.9.1/lib/bundler.rb:122
                  (root) at {path}/gems/bundler-1.9.1/lib/bundler/setup.rb:8
                 require at org/jruby/RubyKernel.java:1065
                 require {path}/rubies/jruby-1.7.15/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55
                 require at {path}rubies/jruby-1.7.15/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:53
                  (root) at {path}/gems/jbundler-0.7.3/lib/jbundler/lock_down.rb:1
  attach_jar_coordinates at {path}/gems/jbundler-0.7.3/lib/jbundler/lock_down.rb:145
              exec_maven at {path}/gems/jbundler-0.7.3/lib/jbundler/lock_down.rb:136
    install_dependencies at {path}/gems/jbundler-0.7.3/lib/jbundler/lock_down.rb:110
               lock_down at {path}/gems/jbundler-0.7.3/lib/jbundler/lock_down.rb:54
                 install at {path}/gems/jbundler-0.7.3/lib/jbundler/cli.rb:95
                     run at {path}/gems/bundler-1.9.1/lib/bundler/vendor/thor/lib/thor/command.rb:27
          invoke_command at {path}/gems/bundler-1.9.1/lib/bundler/vendor/thor/lib/thor/invocation.rb:126
                dispatch at {path}/gems/bundler-1.9.1/lib/bundler/vendor/thor/lib/thor.rb:359
                   start at {path}/gems/bundler-1.9.1/lib/bundler/vendor/thor/lib/thor/base.rb:440
                    load at org/jruby/RubyKernel.java:1081
                  (root) at {path}/bin/jbundle:23

I've had the same problem with other gems as well. I can fix the issue by manually updating each of the gems in conflict, but this doesn't make sense when you must keep versions synched across several machines.

Can't download com/sun/jmx/* artefacts

I'm getting this error today:

downloaded https://maven-repository.dev.java.net/nonav/repository/com/sun/jmx/jmxri/1.2.1/jmxri-1.2.1.jar
org.eclipse.aether.resolution.DependencyResolutionException: The following artifacts could not be resolved: javax.jms:jms:jar:1.1, com.sun.jdmk:jmxtools:jar:1.2.1, com.sun.jmx:jmxri:jar:1.2.1: Could not transfer artifact javax.jms:jms:jar:1.1 from/to java.net (https://maven-repository.dev.java.net/nonav/repository): No connector available to access repository java.net (https://maven-repository.dev.java.net/nonav/repository) of type legacy using the available factories WagonRepositoryConnectorFactory
...

It seems this repository is not working. Is it possible for me to specify not to include some repository? Also, it would help if I could provide an "excludes" list in the DSL. Something like:

jar 'some:dependency', '1.0.0', excludes: ['jmx:jmx', ...]

jbundle install uses old bundler?

reubygems mirror config is deprecated, use bundler >=1.5 and its mirror config

I am using bundler 1.6.2

Also I am getting this error when invoking jbundler

Could not find slop-3.5.0 in any of the sources

This is with an empty jarfile.

Vendoring fails if Install was not run first

To reproduce, use this app:

git clone https://github.com/jkutner/jruby-netty-example

Then run:

$ rm -rf ~/.m2/repository/io/netty/ .jbundler/ vendor/
$ jbundle install --vendor
...
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
vendor directory: /Users/jkutner/workspace/heroku/kissaten/jruby-netty-example/vendor/jars
Errno::ENOENT: No such file or directory - /io/netty/netty-all/4.0.28.Final/netty-all-4.0.28.Final.jar
                 initialize at org/jruby/RubyFile.java:342
                       open at org/jruby/RubyIO.java:1124
                  copy_file at /Users/jkutner/.rvm/rubies/jruby-9.0.0.0/lib/ruby/stdlib/fileutils.rb:1401
                  copy_file at /Users/jkutner/.rvm/rubies/jruby-9.0.0.0/lib/ruby/stdlib/fileutils.rb:485
                block in cp at /Users/jkutner/.rvm/rubies/jruby-9.0.0.0/lib/ruby/stdlib/fileutils.rb:402
  block in fu_each_src_dest at /Users/jkutner/.rvm/rubies/jruby-9.0.0.0/lib/ruby/stdlib/fileutils.rb:1580
          fu_each_src_dest0 at /Users/jkutner/.rvm/rubies/jruby-9.0.0.0/lib/ruby/stdlib/fileutils.rb:1596
           fu_each_src_dest at /Users/jkutner/.rvm/rubies/jruby-9.0.0.0/lib/ruby/stdlib/fileutils.rb:1578
                         cp at /Users/jkutner/.rvm/rubies/jruby-9.0.0.0/lib/ruby/stdlib/fileutils.rb:401
                vendor_file at /Users/jkutner/.rvm/rubies/jruby-9.0.0.0/lib/ruby/stdlib/jars/installer.rb:97
                  write_dep at /Users/jkutner/.rvm/rubies/jruby-9.0.0.0/lib/ruby/stdlib/jars/installer.rb:105
      block in install_deps at /Users/jkutner/.rvm/rubies/jruby-9.0.0.0/lib/ruby/stdlib/jars/installer.rb:113
                       each at org/jruby/RubyArray.java:1560
               install_deps at /Users/jkutner/.rvm/rubies/jruby-9.0.0.0/lib/ruby/stdlib/jars/installer.rb:112
        vendor_dependencies at /Users/jkutner/.rvm/gems/jruby-9.0.0.0/gems/jbundler-0.8.0/lib/jbundler/vendor.rb:36
                  vendor_it at /Users/jkutner/.rvm/gems/jruby-9.0.0.0/gems/jbundler-0.8.0/lib/jbundler/lock_down.rb:73
                  lock_down at /Users/jkutner/.rvm/gems/jruby-9.0.0.0/gems/jbundler-0.8.0/lib/jbundler/lock_down.rb:58
                    install at /Users/jkutner/.rvm/gems/jruby-9.0.0.0/gems/jbundler-0.8.0/lib/jbundler/cli.rb:80
                        run at /Users/jkutner/.rvm/gems/jruby-9.0.0.0/gems/bundler-1.10.6/lib/bundler/vendor/thor/lib/thor/command.rb:27
             invoke_command at /Users/jkutner/.rvm/gems/jruby-9.0.0.0/gems/bundler-1.10.6/lib/bundler/vendor/thor/lib/thor/invocation.rb:126
                   dispatch at /Users/jkutner/.rvm/gems/jruby-9.0.0.0/gems/bundler-1.10.6/lib/bundler/vendor/thor/lib/thor.rb:359
                      start at /Users/jkutner/.rvm/gems/jruby-9.0.0.0/gems/bundler-1.10.6/lib/bundler/vendor/thor/lib/thor/base.rb:440
                      <top> at /Users/jkutner/.rvm/gems/jruby-9.0.0.0/gems/jbundler-0.8.0/bin/jbundle:47
                       load at org/jruby/RubyKernel.java:958
                     <eval> at /Users/jkutner/.rvm/gems/jruby-9.0.0.0/bin/jbundle:1
                       eval at org/jruby/RubyKernel.java:979
                      <top> at /Users/jkutner/.rvm/gems/jruby-9.0.0.0/bin/jbundle:23

If you run jbundle install first, then the --vendor option works as expected.

jbundle tree fails with โ€œCould not resolve dependencies for project no_group_id_given:jbundler:jar:0.0.0โ€

$ jbundle tree
...
[ERROR] Failed to execute goal on project jbundler: Could not resolve dependencies for project no_group_id_given:jbundler:jar:0.0.0: The following artifacts could not be resolved: javax.jms:jms:jar:1.1, com.sun.jdmk:jmxtools:jar:1.2.1, com.sun.jmx:jmxri:jar:1.2.1: Could not transfer artifact javax.jms:jms:jar:1.1 from/to java.net (https://maven-repository.dev.java.net/nonav/repository): Cannot access https://maven-repository.dev.java.net/nonav/repository with type legacy using the available connector factories: BasicRepositoryConnectorFactory: Cannot access https://maven-repository.dev.java.net/nonav/repository with type legacy using the available layout factories: Maven2RepositoryLayoutFactory: Unsupported repository layout legacy -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
Errno::ENOENT: No such file or directory - /Users/avi/dev_local/my_project/my_component/pkg/tree.txt
            read at org/jruby/RubyIO.java:3581
         show_it at /Users/avi/.rbenv/versions/jruby-9.0.5.0/lib/ruby/gems/shared/gems/jbundler-0.9.2/lib/jbundler/tree.rb:28
            tree at /Users/avi/.rbenv/versions/jruby-9.0.5.0/lib/ruby/gems/shared/gems/jbundler-0.9.2/lib/jbundler/cli.rb:59
             run at /Users/avi/.rbenv/versions/jruby-9.0.5.0/lib/ruby/gems/shared/gems/bundler-1.11.2/lib/bundler/vendor/thor/lib/thor/command.rb:27
  invoke_command at /Users/avi/.rbenv/versions/jruby-9.0.5.0/lib/ruby/gems/shared/gems/bundler-1.11.2/lib/bundler/vendor/thor/lib/thor/invocation.rb:126
        dispatch at /Users/avi/.rbenv/versions/jruby-9.0.5.0/lib/ruby/gems/shared/gems/bundler-1.11.2/lib/bundler/vendor/thor/lib/thor.rb:359
           start at /Users/avi/.rbenv/versions/jruby-9.0.5.0/lib/ruby/gems/shared/gems/bundler-1.11.2/lib/bundler/vendor/thor/lib/thor/base.rb:440
           <top> at /Users/avi/.rbenv/versions/jruby-9.0.5.0/lib/ruby/gems/shared/gems/jbundler-0.9.2/bin/jbundle:47
            load at org/jruby/RubyKernel.java:955
           <top> at /Users/avi/.rbenv/versions/jruby-9.0.5.0/bin/jbundle:23

My Jarfile:

repository :confluent, "http://packages.confluent.io/maven/"

jar 'io.confluent:kafka-avro-serializer', '~>2.0.0'
jar 'org.apache.samza:samza-core_2.10', '~>0.10.0'
jar 'org.apache.samza:samza-kafka_2.9.2',   '~>0.7.0'

My Gemfile:

group :build do
  gem 'jbundler', '~> 0.9.2'
  gem 'warbler', '~> 2.0.0.rc2', require: false
end

Support repositories over HTTPS

Hi there!

When I try to include a snapshot version of a maven artifact, jbundler is not able to resolve the dependencies (or even find the correct .pom file).

As an example (Graph-DB @thinkaurelius/titan):

source 'https://oss.sonatype.org/content/repositories/snapshots'
jar 'com.thinkaurelius.titan:titan-all', '0.4.0-SNAPSHOT'

tries

downloading https://oss.sonatype.org/content/repositories/snapshots/com/thinkaurelius/titan/titan-all/0.4.0-SNAPSHOT/titan-all-0.4.0-SNAPSHOT.pom

when it rather should look into

https://oss.sonatype.org/content/repositories/snapshots/com/thinkaurelius/titan/titan-all/0.4.0-SNAPSHOT/maven-metadata.xml

and find the current "snapshotVersion.value" (0.4.0-20130330.010756-1)
and now ask for the right file

https://oss.sonatype.org/content/repositories/snapshots/com/thinkaurelius/titan/titan-all/0.4.0-SNAPSHOT/titan-all-0.4.0-20130330.010756-1.pom

Maybe you can use [this Aether method](http://www.jarvana.com/jarvana/view/org/sonatype/aether/aether-api/1.0/aether-api-1.0-javadoc.jar!/org/sonatype/aether/RepositorySystem.html#resolveVersion%28org.sonatype.aether.RepositorySystemSession, org.sonatype.aether.VersionRequest%29) to find the correct name?

Or is ist just that i overlooked something and it is already working?

RubyObject cannot be cast to PluginExecution

Greetings,

I am getting the following errors in the example project (this is ./src/example/my_project) when running

jbundle exec -b info.rb

I assumed it was something with my environment but if I run rake all from the same directory it builds the executable jar fine.

Here is the stacktrace in all its glory, any help would be appreciated:

jbundle exec -b info.rb

[INFO] Scanning for projects...
[ERROR] Internal error: java.lang.ClassCastException: org.jruby.RubyObject cannot be cast to org.apache.maven.model.PluginExecution -> [Help 1]
org.apache.maven.InternalErrorException: Internal error: java.lang.ClassCastException: org.jruby.RubyObject cannot be cast to org.apache.maven.model.PluginExecution
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:164)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:555)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214)
at org.apache.maven.cli.PolyglotMavenCli.main(PolyglotMavenCli.java:64)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.jruby.javasupport.JavaMethod.invokeDirectWithExceptionHandling(JavaMethod.java:455)
at org.jruby.javasupport.JavaMethod.invokeStaticDirect(JavaMethod.java:367)
at org.jruby.java.invokers.StaticMethodInvoker.call(StaticMethodInvoker.java:60)
at org.jruby.internal.runtime.methods.AliasMethod.call(AliasMethod.java:61)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:182)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:198)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
at org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.ast.IfNode.interpret(IfNode.java:116)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:182)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:198)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.IfNode.interpret(IfNode.java:118)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:268)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:230)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:366)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:238)
at org.jruby.ast.FCallSpecialArgNode.interpret(FCallSpecialArgNode.java:43)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:112)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:164)
at org.jruby.runtime.Helpers$MethodMissingMethod.call(Helpers.java:447)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:218)
at org.jruby.runtime.callsite.CachingCallSite.callMethodMissing(CachingCallSite.java:413)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:343)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:204)
at org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:139)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:182)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:306)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:136)
at org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:60)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:161)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:190)
at org.jruby.RubyClass.finvoke(RubyClass.java:527)
at org.jruby.RubyBasicObject.send19(RubyBasicObject.java:1504)
at org.jruby.RubyBasicObject$INVOKER$i$send19.call(RubyBasicObject$INVOKER$i$send19.gen)
at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodOneOrNBlock.call(JavaMethod.java:350)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
at org.jruby.ast.CallSpecialArgNode.interpret(CallSpecialArgNode.java:67)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.ast.IfNode.interpret(IfNode.java:116)
at org.jruby.ast.IfNode.interpret(IfNode.java:118)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.ast.RescueNode.executeBody(RescueNode.java:221)
at org.jruby.ast.RescueNode.interpret(RescueNode.java:116)
at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:225)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:214)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:346)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:204)
at org.jruby.ast.CallSpecialArgNode.interpret(CallSpecialArgNode.java:69)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.ast.IfNode.interpret(IfNode.java:118)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:225)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:214)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:346)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:204)
at org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:112)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:126)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:173)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:296)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:72)
at org.jruby.ast.FCallManyArgsNode.interpret(FCallManyArgsNode.java:60)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.ast.RescueNode.executeBody(RescueNode.java:221)
at org.jruby.ast.RescueNode.interpret(RescueNode.java:116)
at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:139)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:182)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:306)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:136)
at org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:60)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.ast.IfNode.interpret(IfNode.java:118)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.ast.IfNode.interpret(IfNode.java:118)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.ast.RootNode.interpret(RootNode.java:129)
at org.jruby.evaluator.ASTInterpreter.INTERPRET_ROOT(ASTInterpreter.java:121)
at org.jruby.Ruby.runInterpreter(Ruby.java:838)
at org.jruby.Ruby.loadFile(Ruby.java:2727)
at org.jruby.runtime.load.ExternalScript.load(ExternalScript.java:66)
at org.jruby.runtime.load.LoadService.load(LoadService.java:359)
at org.jruby.RubyKernel.loadCommon(RubyKernel.java:1107)
at org.jruby.RubyKernel.load19(RubyKernel.java:1099)
at org.jruby.RubyKernel$INVOKER$s$0$1$load19.call(RubyKernel$INVOKER$s$0$1$load19.gen)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:210)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:206)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
at Users.gustin.$_dot_rbenv.versions.jruby_minus_1_dot_7_dot_9.bin.jbundle.file(/Users/gustin/.rbenv/versions/jruby-1.7.9/bin/jbundle:23)
at Users.gustin.$_dot_rbenv.versions.jruby_minus_1_dot_7_dot_9.bin.jbundle.load(/Users/gustin/.rbenv/versions/jruby-1.7.9/bin/jbundle)
at org.jruby.Ruby.runScript(Ruby.java:811)
at org.jruby.Ruby.runScript(Ruby.java:804)
at org.jruby.Ruby.runNormally(Ruby.java:673)
at org.jruby.Ruby.runFromMain(Ruby.java:522)
at org.jruby.Main.doRunFromMain(Main.java:395)
at org.jruby.Main.internalRun(Main.java:290)
at org.jruby.Main.run(Main.java:217)
at org.jruby.Main.main(Main.java:197)
Caused by: java.lang.ClassCastException: org.jruby.RubyObject cannot be cast to org.apache.maven.model.PluginExecution
at org.apache.maven.model.validation.DefaultModelValidator.validate20RawPlugins(DefaultModelValidator.java:207)
at org.apache.maven.model.validation.DefaultModelValidator.validateRawModel(DefaultModelValidator.java:129)
at org.apache.maven.model.building.DefaultModelBuilder.readModel(DefaultModelBuilder.java:525)
at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:256)
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:411)
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:380)
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:344)
at org.apache.maven.DefaultMaven.collectProjects(DefaultMaven.java:637)
at org.apache.maven.DefaultMaven.getProjectsForMavenReactor(DefaultMaven.java:586)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:229)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:152)
... 158 more
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/InternalErrorException

now you can execute your jar like this

java -jar /Users/gustin/Dev/jbundler/src/example/my_project/target/executable/*.jar

requiring 'jbundler' from subdirectory breaks the import process.

If the current working directory isn't where the Jarfile is, when you require 'jbundler', it will silently fail and when you try and use the java classes you wanted things break.

E.g., this will succeed:

jtheobald@Ulysses:~/code/hive$ bundle exec irb
irb(main):001:0> require 'jbundler'
=> true
irb(main):002:0> java_import java.sql.DriverManager
=> [Java::JavaSql::DriverManager]
irb(main):003:0> DriverManager.register_driver(org.apache.hive.jdbc.HiveDriver.new)
=> nil
irb(main):004:0>

But this won't:

jtheobald@Ulysses:~/code/hive$ cd src/
jtheobald@Ulysses:~/code/src$ bundle exec irb
irb(main):001:0> require 'jbundler'
=> true
irb(main):002:0> java_import java.sql.DriverManager
=> [Java::JavaSql::DriverManager]
irb(main):003:0> DriverManager.register_driver(org.apache.hive.jdbc.HiveDriver.new)
NameError: missing class or uppercase package name(`org.apache.hive.jdbc.HiveDriver')
    from org/jruby/javasupport/JavaUtilities.java:54:in `get_proxy_or_package_under_package'
    from file:/opt/boxen/rbenv/versions/jruby-1.7.6/lib/jruby.jar!/jruby/java/java_package_module_template.rb:14:in `method_missing'
    from (irb):3:in `evaluate'
    from org/jruby/RubyKernel.java:1121:in `eval'
    from org/jruby/RubyKernel.java:1517:in `loop'
    from org/jruby/RubyKernel.java:1282:in `catch'
    from org/jruby/RubyKernel.java:1282:in `catch'
    from /opt/boxen/rbenv/versions/jruby-1.7.6/bin/irb:13:in `(root)'
irb(main):004:0>

The jarfile is just:

repository :cloudera, "https://repository.cloudera.com/artifactory/cloudera-repos/"

jar 'org.slf4j:slf4j-simple', '> 1.6.0', '< 1.7.0'
jar 'org.apache.hive:hive-jdbc', '0.10.0-cdh4.2.0'
jar 'org.apache.hadoop:hadoop-hdfs', '2.0.0-cdh4.2.0'
jar 'org.apache.hadoop:hadoop-common', '2.0.0-cdh4.2.0'

Does jbundler work with the Heroku build pack?

I have some Java code which I'd like to interop with from a Jruby / Rails app via require java. Does jbundler play nicely with the Heroku build pack, in which case I can just drop a Jarfile in the root and have bundler do the rest? Or does Heroku still strip the jar files, in which case the separate gem + jar workaround is necessary?

Can't install solr-solrj 4.5.1

Use this in a Jarfile:

jar 'org.apache.solr:solr-solrj:4.5.1'

It tries to download the wrong file:

downloading http://repo2.maven.org/maven2/org/apache/solr/solr-solrj/4.5.1/solr-solrj-4.5.1-4.5.1.jar
downloaded http://repo2.maven.org/maven2/org/apache/solr/solr-solrj/4.5.1/solr-solrj-4.5.1-4.5.1.jar
org.eclipse.aether.resolution.DependencyResolutionException: Could not find artifact org.apache.solr:solr-solrj:jar:4.5.1:4.5.1 in central (http://repo2.maven.org/maven2)

Any ideas?

Reading from ~/.m2/settings.xml

From the readme's limitations of jbundler:

jbundler does not yet obey the $HOME/.m2/settings.xml from maven where you usually declare proxies, mirrors, etc.

What would it take to make this happen, at a high level? I might be willing to undertake it, but I've admittedly only been using Maven for a few weeks now (Ruby dev thrown into a Java world for a while). I'd really like to take advantage of the infrastructure my group has built to pull in deps while building a side project for the group using JRuby.

ruby-maven 3.0.3.0.29.0.pre not in rubygems

When I try to run bundle install with the jbundler dependency, I get the following:

$ bundle install
Fetching gem metadata from http://rubygems.org/.........
Could not find gem 'ruby-maven (= 3.0.3.0.29.0.pre) java', which is required by gem 'jbundler (>= 0) java', in any of the sources.

But that version of ruby-maven does not exist, I tried it here:

$ gem install ruby-maven 3.0.3.0.29.0.pre
Fetching: ruby-maven-3.0.3.0.28.5.gem (100%)
Successfully installed ruby-maven-3.0.3.0.28.5
ERROR:  Could not find a valid gem '3.0.3.0.29.0.pre' (>= 0) in any repository
1 gem installed

It seems the latest version is 3.0.3.0.28.5. Is this .29.0.pre version available anywhere?

MissingArgumentException

Hello,

I'm trying to run jbundler on new app and i'm getting following output:

[ERROR] Error executing Maven.
org.apache.commons.cli.MissingArgumentException: Missing argument for option: s
    at org.apache.commons.cli.Parser.processArgs(Parser.java:343)
    at org.apache.commons.cli.Parser.processOption(Parser.java:393)
    at org.apache.commons.cli.Parser.parse(Parser.java:199)
    at org.apache.commons.cli.Parser.parse(Parser.java:85)
    at org.apache.maven.cli.CLIManager.parse(CLIManager.java:155)
    at org.apache.maven.cli.MavenCli.cli(MavenCli.java:278)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:204)
    at org.apache.maven.cli.PolyglotMavenCli.main(PolyglotMavenCli.java:64)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.jruby.javasupport.JavaMethod.invokeDirectWithExceptionHandling(JavaMethod.java:455)
    at org.jruby.javasupport.JavaMethod.invokeStaticDirect(JavaMethod.java:367)
    at org.jruby.java.invokers.StaticMethodInvoker.call(StaticMethodInvoker.java:60)
    at org.jruby.internal.runtime.methods.AliasMethod.call(AliasMethod.java:61)
    at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
    at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:182)
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:186)
    at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
    at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
    at org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.IfNode.interpret(IfNode.java:116)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:182)
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:186)
    at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
    at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
    at org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:206)
    at org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:157)
    at org.jruby.runtime.Interpreted19Block.yieldSpecific(Interpreted19Block.java:130)
    at org.jruby.runtime.Block.yieldSpecific(Block.java:111)
    at org.jruby.ast.ZYieldNode.interpret(ZYieldNode.java:25)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
    at org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:206)
    at org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:157)
    at org.jruby.runtime.Interpreted19Block.yieldSpecific(Interpreted19Block.java:130)
    at org.jruby.runtime.Block.yieldSpecific(Block.java:111)
    at org.jruby.ast.ZYieldNode.interpret(ZYieldNode.java:25)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:161)
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:178)
    at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:316)
    at org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:145)
    at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:154)
    at org.jruby.ast.FCallNoArgBlockNode.interpret(FCallNoArgBlockNode.java:32)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:161)
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:178)
    at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:316)
    at org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:145)
    at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:154)
    at org.jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:64)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.IfNode.interpret(IfNode.java:116)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:182)
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:186)
    at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
    at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:268)
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:218)
    at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:366)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:238)
    at org.jruby.ast.FCallThreeArgNode.interpret(FCallThreeArgNode.java:40)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:225)
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:202)
    at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:346)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:204)
    at org.jruby.ast.FCallTwoArgNode.interpret(FCallTwoArgNode.java:38)
    at org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.IfNode.interpret(IfNode.java:118)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:268)
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:218)
    at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:366)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:238)
    at org.jruby.ast.CallThreeArgNode.interpret(CallThreeArgNode.java:61)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:161)
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:178)
    at org.jruby.RubyClass.finvoke(RubyClass.java:578)
    at org.jruby.RubyBasicObject.send19(RubyBasicObject.java:1703)
    at org.jruby.RubyBasicObject$INVOKER$i$send19.call(RubyBasicObject$INVOKER$i$send19.gen)
    at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodOneOrNBlock.call(JavaMethod.java:347)
    at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
    at org.jruby.ast.CallSpecialArgNode.interpret(CallSpecialArgNode.java:67)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.IfNode.interpret(IfNode.java:116)
    at org.jruby.ast.IfNode.interpret(IfNode.java:118)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.RescueNode.executeBody(RescueNode.java:222)
    at org.jruby.ast.RescueNode.interpret(RescueNode.java:117)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:225)
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:202)
    at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:346)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:204)
    at org.jruby.ast.CallSpecialArgNode.interpret(CallSpecialArgNode.java:69)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.IfNode.interpret(IfNode.java:118)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:225)
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:202)
    at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:346)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:204)
    at org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:112)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:126)
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:161)
    at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:296)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:72)
    at org.jruby.ast.FCallManyArgsNode.interpret(FCallManyArgsNode.java:60)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.RescueNode.executeBody(RescueNode.java:222)
    at org.jruby.ast.RescueNode.interpret(RescueNode.java:117)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:139)
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:170)
    at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:306)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:136)
    at org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:60)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.IfNode.interpret(IfNode.java:118)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.IfNode.interpret(IfNode.java:118)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.RootNode.interpret(RootNode.java:129)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_ROOT(ASTInterpreter.java:121)
    at org.jruby.Ruby.runInterpreter(Ruby.java:834)
    at org.jruby.Ruby.loadFile(Ruby.java:2674)
    at org.jruby.runtime.load.ExternalScript.load(ExternalScript.java:66)
    at org.jruby.runtime.load.LoadService.load(LoadService.java:359)
    at org.jruby.RubyKernel.loadCommon(RubyKernel.java:1081)
    at org.jruby.RubyKernel.load19(RubyKernel.java:1073)
    at org.jruby.RubyKernel$INVOKER$s$0$1$load19.call(RubyKernel$INVOKER$s$0$1$load19.gen)
    at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:209)
    at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:205)
    at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
    at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.RootNode.interpret(RootNode.java:129)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_EVAL(ASTInterpreter.java:95)
    at org.jruby.evaluator.ASTInterpreter.evalWithBinding(ASTInterpreter.java:184)
    at org.jruby.RubyKernel.evalCommon(RubyKernel.java:1130)
    at org.jruby.RubyKernel.eval19(RubyKernel.java:1093)
    at org.jruby.RubyKernel$INVOKER$s$0$3$eval19.call(RubyKernel$INVOKER$s$0$3$eval19.gen)
    at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:225)
    at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:221)
    at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:366)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:238)
    at home.user.$_dot_rvm.gems.jruby_minus_1_dot_7_dot_4.bin.jruby_executable_hooks.__file__(/home/user/.rvm/gems/jruby-1.7.4/bin/jruby_executable_hooks:15)
    at home.user.$_dot_rvm.gems.jruby_minus_1_dot_7_dot_4.bin.jruby_executable_hooks.load(/home/user/.rvm/gems/jruby-1.7.4/bin/jruby_executable_hooks)
    at org.jruby.Ruby.runScript(Ruby.java:807)
    at org.jruby.Ruby.runScript(Ruby.java:800)
    at org.jruby.Ruby.runNormally(Ruby.java:669)
    at org.jruby.Ruby.runFromMain(Ruby.java:518)
    at org.jruby.Main.doRunFromMain(Main.java:390)
    at org.jruby.Main.internalRun(Main.java:279)
    at org.jruby.Main.run(Main.java:221)
    at org.jruby.Main.main(Main.java:201)
Errno::ENOENT: No such file or directory - /home/user/rails_projects/docx/pkg/dependencies.txt
            initialize at org/jruby/RubyFile.java:334
                  open at org/jruby/RubyIO.java:1144
                  open at org/jruby/RubyKernel.java:347
                  read at org/jruby/RubyIO.java:3590
                  read at org/jruby/RubyIO.java:3687
  install_dependencies at /home/user/.rvm/gems/jruby-1.7.4/gems/jbundler-0.6.3/lib/jbundler/lock_down.rb:114
             lock_down at /home/user/.rvm/gems/jruby-1.7.4/gems/jbundler-0.6.3/lib/jbundler/lock_down.rb:46
               install at /home/user/.rvm/gems/jruby-1.7.4/gems/jbundler-0.6.3/lib/jbundler/cli.rb:92
              __send__ at org/jruby/RubyBasicObject.java:1703
                   run at /home/user/.rvm/gems/jruby-1.7.4@global/gems/bundler-1.6.2/lib/bundler/vendor/thor/command.rb:27
        invoke_command at /home/user/.rvm/gems/jruby-1.7.4@global/gems/bundler-1.6.2/lib/bundler/vendor/thor/invocation.rb:121
              dispatch at /home/user/.rvm/gems/jruby-1.7.4@global/gems/bundler-1.6.2/lib/bundler/vendor/thor.rb:363
                 start at /home/user/.rvm/gems/jruby-1.7.4@global/gems/bundler-1.6.2/lib/bundler/vendor/thor/base.rb:440
                (root) at /home/user/.rvm/gems/jruby-1.7.4/gems/jbundler-0.6.3/bin/jbundle:57
                  load at org/jruby/RubyKernel.java:1073
                (root) at /home/user/.rvm/gems/jruby-1.7.4/bin/jbundle:1
                  eval at org/jruby/RubyKernel.java:1093
                (root) at /home/user/.rvm/gems/jruby-1.7.4/bin/jruby_executable_hooks:15

Include .jbundler in SCM/VCS?

Hi, Iโ€™m new to Ruby and JRuby, so maybe this is obvious to others but I just donโ€™t know: should I track the directory .jbundler in my source control repository? Or ignore it?

Thanks!

excluding dependencies from transitive dependencies does not work

Jarfile with

jar 'org.opensaml:opensaml', '2.6.1', :exclusions => ['org.bouncycastle:bcprov-jdk15']

works OK when there is no Jarfile.lock and .jbundler/classpath.rb. but with Jarfile.lock and without jbundler/classpath.rb the transitive dependency org.opensaml:xmltooling:jar:1.4.1 does pull in org.bouncycastle:bcprov-jdk15 while creating .jbundler/classpath.rb.

also see:

no_group_id_given:jbundler:jar:0.0.0
\- org.opensaml:opensaml:jar:2.6.1:compile
   +- org.opensaml:openws:jar:1.5.1:compile
   |  +- org.opensaml:xmltooling:jar:1.4.1:compile
   |  |  +- org.bouncycastle:bcprov-jdk15:jar:1.46:compile
   |  |  \- ca.juliusdavies:not-yet-commons-ssl:jar:0.3.9:compile
   |  +- commons-httpclient:commons-httpclient:jar:3.1:compile
   |  \- org.apache.santuario:xmlsec:jar:1.5.6:compile
   |     \- commons-logging:commons-logging:jar:1.1.1:compile
   +- commons-codec:commons-codec:jar:1.7:compile
   +- commons-collections:commons-collections:jar:3.2.1:compile
   +- commons-lang:commons-lang:jar:2.6:compile
   +- org.apache.velocity:velocity:jar:1.7:compile
   +- org.owasp.esapi:esapi:jar:2.0.1:compile
   +- joda-time:joda-time:jar:2.2:compile
   +- xerces:xercesImpl:jar:2.10.0:runtime
   +- xalan:serializer:jar:2.7.1:runtime
   +- xml-resolver:xml-resolver:jar:1.2:runtime
   \- xalan:xalan:jar:2.7.1:runtime

Does Jbundler support authentication to private repositories?

You can specify a custom repository easily enough with the 'repository "https://somemavenrepo.com" line, but there's nothing in the documentation saying whether this supports authenticated requests using a standard Maven username/password. Can this be done in the Jarfile itself, perhaps similar to the way a build.gradle file has a credentials block in its repository definition:

repositories {
  maven {
    credentials {        
      username [usr]
      password [pwd]
    }
    url "https://somemavenrepo.com/libs-releases-local"
  }
  jcenter()
}

Alternatively does Jbundler obey the authentication definition in settings.xml when downloading artefacts from a URL that matches one in the settings.xml?

Given that the most common reason for hosting your own Maven repo is (probably) to host commercial private JAR artefacts protected by authentication, this seems a bit of an oversight.

Support "drop jar files into current project directory" mode to support single file distribution...

Hey. I would love to use jbundler to solve our JAR dependency needs in a JRuby project -- but I have a hard requirement to make a single file distribution work. Users need to be able to download a single file that contains everything required to run the project without reference to external resources, or especially, to the Internet, for things to work.

In my ideal world I would run jbundle install and would end up with the JAR files copied into my vendor/jars directory under my project root -- plus a static Ruby file that could load them, or the ability to include the jbundle gem through bundler (in vendor/gems), load it, and have it automatically make available the content from vendor/jars.

This is similar to what bundler does with the --deployment option, but for JAR files. :)

jbundler not properly respecting exclude/not versions

In lookout/Hermann I'm trying to enumerate the following "jar-dependency"

   s.requirements << "jar org.apache.kafka:kafka_2.10, '>=0.8.1.1', '<=0.8.2.0', '!0.8.2-beta'"

My goal is to have a Jarfile that does:

source 'http://dl.bintray.com/lookout/systems'
# Pull in our custom fork of Apache Kafka as a transitive dependency
jar 'org.apache.kafka:kafka_2.10', '0.8.2.0'

Regardless of what I've tried, a jbundle install still gives me:

file:/usr/home/tyler/.rvm/rubies/jruby-1.7.15/lib/jruby.jar!/jruby/kernel19/kernel.rb:28 warning: executable? does not in this environment and will return a dummy value
file:/usr/home/tyler/.rvm/rubies/jruby-1.7.15/lib/jruby.jar!/jruby/kernel19/kernel.rb:28 warning: executable? does not in this environment and will return a dummy value
Using rake 10.3.2
Using i18n 0.6.9
Using json 1.8.1
Using minitest 5.3.4
Using thread_safe 0.3.4
Using tzinfo 1.2.1
Using activesupport 4.1.1
Using archive-tar-minitar 0.5.2
Using erubis 2.7.0
Using lookout-artifactory 1.1.0
Using lookout-semverly 1.1.7
Using artify 0.1.15
Using descendants_tracker 0.0.4
Using ice_nine 0.11.0
Using axiom-types 0.1.1
Using builder 3.2.2
Using bundler 1.7.2
Using mime-types 2.1
Using nokogiri 1.6.3.1
Using rack 1.5.2
Using rack-test 0.6.2
Using xpath 2.0.0
Using capybara 2.2.1
Using timers 1.1.0
Using celluloid 0.15.2
Using nio4r 1.0.0
Using celluloid-io 0.15.0
Using ci_reporter 1.9.1
Using coderay 1.1.0
Using coercible 1.0.0
Using concurrent-ruby 0.7.0
Using yamler 0.1.0
Using configatron 2.13.0
Using connection_pool 1.2.0
Using diff-lcs 1.2.5
Using multi_json 1.10.1
Using gherkin 2.12.2
Using multi_test 0.0.3
Using cucumber 1.3.10
Using docile 1.1.3
Using docopt 0.5.0
Using dotenv 0.10.0
Using equalizer 0.0.9
Using eventmachine 0.12.10
Using factory_girl 4.4.0
Using multipart-post 2.0.0
Using faraday 0.9.0
Using ffi 1.9.3
Using thor 0.18.1
Using foreman 0.63.0
Using formatador 0.2.4
Using rb-fsevent 0.9.4
Using rb-inotify 0.9.3
Using listen 2.6.0
Using lumberjack 1.0.4
Using method_source 0.8.2
Using slop 3.4.7
Using spoon 0.0.4
Using pry 0.9.12.6
Using guard 2.5.0
Using guard-cucumber 1.4.1
Using rspec-core 2.14.7
Using rspec-expectations 2.14.5
Using rspec-mocks 2.14.6
Using rspec 2.14.1
Using guard-rspec 4.2.7
Using jar-dependencies 0.1.4
Using hermann 0.20.1
Using virtus 1.0.3
Using maven-tools 1.0.5
Using ruby-maven-libs 3.1.1
Using ruby-maven 3.1.1.0.8
Using jbundler 0.6.4
Using jruby-jars 1.7.15
Using jruby-openssl 0.9.5
Using jruby-rack 1.1.14
Using jwt 0.1.13
Using jwe 0.2.12
Using keymaster-token 0.5.35
Using keymaster-client 0.13.100
Using log4r 1.1.10
Using lookout-jruby 1.2.4
Using lookout-statsd 0.9.0
Using rack-graphite 1.0.0
Using rack-requestash 0.3.1
Using lookout-rack-utils 1.5.0
Using sentry-raven 0.12.0
Using lookout-sentry-raven 0.4.16
Using middleware 0.1.0
Using protobuf 3.0.4
Using puma 2.7.1
Using rack-protection 1.5.2
Using rubyzip 1.1.6
Using simplecov-html 0.8.0
Using simplecov 0.8.2
Using simplecov-rcov 0.2.3
Using tilt 1.4.1
Using sinatra 1.4.4
Using stomp 1.3.2
Using warbler 1.4.4
Using yard 0.8.7.3
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.
Jar dependencies are up to date !

jbundler provided classpath:
----------------

jbundler runtime classpath:
---------------------------
/home/tyler/.m2/repository/org/apache/kafka/kafka-clients/0.8.2-beta/kafka-clients-0.8.2-beta.jar
/home/tyler/.m2/repository/io/netty/netty/3.7.0.Final/netty-3.7.0.Final.jar
/home/tyler/.m2/repository/log4j/log4j/1.2.17/log4j-1.2.17.jar
/home/tyler/.m2/repository/net/sf/jopt-simple/jopt-simple/3.2/jopt-simple-3.2.jar
/home/tyler/.m2/repository/jline/jline/2.11/jline-2.11.jar
/home/tyler/.m2/repository/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar
/home/tyler/.m2/repository/org/mod4j/org/eclipse/xtext/log4j/1.2.15/log4j-1.2.15.jar
/home/tyler/.m2/repository/org/scala-lang/scala-library/2.10.1/scala-library-2.10.1.jar
/home/tyler/.m2/repository/org/xerial/snappy/snappy-java/1.1.1.3/snappy-java-1.1.1.3.jar
/home/tyler/.m2/repository/com/101tec/zkclient/0.3/zkclient-0.3.jar
/home/tyler/.m2/repository/com/yammer/metrics/metrics-core/2.2.0/metrics-core-2.2.0.jar
/home/tyler/.m2/repository/org/apache/zookeeper/zookeeper/3.4.6/zookeeper-3.4.6.jar
/home/tyler/.m2/repository/org/apache/kafka/kafka_2.10/0.8.2-beta/kafka_2.10-0.8.2-beta.jar
/home/tyler/.m2/repository/org/bouncycastle/bcprov-jdk15on/1.47/bcprov-jdk15on-1.47.jar
/home/tyler/.m2/repository/org/bouncycastle/bcpkix-jdk15on/1.47/bcpkix-jdk15on-1.47.jar
/home/tyler/.m2/repository/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.jar
/home/tyler/.m2/repository/net/jpountz/lz4/lz4/1.2.0/lz4-1.2.0.jar

jbundler test classpath:
------------------------
    --- empty ---

jbundle complete

This occurs with both jbundler 0.6.4 and 0.7.0. I can't seem to avoid this bloody 0.8.2-beta dependency!

jbundle update runs bundle update?

Thank you for work on this gem. I ran into this today.

I updated from jbundler 0.6.2 and got this warning/error (which one, not sure):

"the .jbundler/classpath.rb is stale, i.e. Gemfile or Jarfile is newer. jbundle update will update it"

But this message is not clear. I ran jbundle which used to update everything. But if I run jbundle update it ran bundle update and updates all my gems (Rails version, etc).

If I want to simply get rid of the "stale" error message, I should not have to run bundle update.

Now I just ran rm -rf .jbundler && jbundle, but that is just odd.

SSL error downloading from repo.maven.apache.org

My last Java experience pre-dates Maven, so I'm not sure if this is relevant to your project, but I had trouble downloading from https://repo.maven.apache.org.

I was following these instructions: https://gist.github.com/joshjordan/6446324 and had trouble installing. Eventually I noticed the error message indicating the SSL certificate didn't match (you can verify this in your browser).

I tried setting a mirror with JBUNDLE_MIRROR=http://repo.maven.apache.org/maven2/ jbundle but this failed because it modified a frozen string with sub!. I changed this to use sub and was able to go about my way.

def mirror
  @mirror ||= jbundler_env('JBUNDLE_MIRROR')
  # nice to have no leading slash
  @mirror = @mirror.sub( /\/$/, '' ) if @mirror
  @mirror
end

Latest jbundler fails to run `jbundle`

The latest jbundler and dependencies don't seem to be working, and I have no idea why. jbundler is part of my gemfile, so I run bundle, then bundle exec jbundle. I get an error that says java.lang.NoClassDefFoundError: org/jruby/embed/ScriptingContainer. Please see this travis build for a full stack trace.

I managed to solve the problem by locking jbundler and dependencies to specific versions. Here's what my gemfile looks like now:

gem 'jbundler', '0.7.1'
gem 'jar-dependencies', '0.1.7'
gem 'maven-tools', '1.0.7'
gem 'ruby-maven', '3.1.1.0.9'

Any idea why this might be happening with the latest jbundler and dependencies?

Undefined method to_sym for [:development, :test]:Array

When I run jbundle install on my dev box (OSX / rbenv / ruby 1.9.3 on jruby 1.7.10) I get the following error, both on v0.5.5 and the just released v0.6:

NoMethodError: undefined method `to_sym' for [:development, :test]:Array
                do_gem at /Users/[me]/.rbenv/versions/jruby-1.7.10/lib/ruby/gems/shared/gems/maven-tools-1.0.0/lib/maven/tools/dsl.rb:1272
...

This is the top of my Gemfile:

source 'https://rubygems.org'

gem 'jbundler', '~> 0.5.5'

This is the Jarfile:

##
# Custom repos which are not Maven Central
source "http://[internal IP]/artifactory/"

##
# An artefact from private repo
jar 'com.mycompany:myartifact', '0.0.1-SNAPSHOT'

I also tried using purely open source libs from Maven Central, just in case there was an issue with our internal Artifactory. This Jarfile failed with the same error.

jar 'commons-io:commons-io', '2.4'

Am I doing something wrong, or is this a bug?

jbundler breaks readline on jruby-head

Running jruby-head:

Gemfile:

source "https://rubygems.org"
gem 'jbundler'

And POC script:

require 'bundler/setup'
Bundler.require

require "irb"
IRB.conf[:PROMPT_MODE] = :SIMPLE
IRB.conf[:USE_READLINE] = true
IRB.setup(nil)
workspace = IRB::WorkSpace.new(binding)
irb = IRB::Irb.new(workspace)
IRB.conf[:IRB_RC].call irb.context if IRB.conf[:IRB_RC]
IRB.conf[:MAIN_CONTEXT] = irb.context
trap("SIGINT") { irb.signal_handle }
catch(:IRB_EXIT) { irb.eval_input }

This breaks readline support:

 $ bundle exec jruby console
uri:classloader:/jruby/kernel/kernel.rb:28: warning: unsupported exec option: close_others
Readline was unable to be required, if you need completion or history install readline then reinstall the ruby.
You may follow 'rvm notes' for dependencies and/or read the docs page https://rvm.io/packages/readline/ . Be sure you 'rvm remove X ; rvm install X' to re-compile your ruby with readline support after obtaining the readline libraries.
jruby-head :001 > require 'readline'
LoadError: load error: readline -- java.lang.NoClassDefFoundError: jline/console/history/History
        from org/jruby/RubyKernel.java:941:in `require'
        from (irb):1:in `<eval>'
        from org/jruby/RubyKernel.java:980:in `eval'
        from org/jruby/RubyKernel.java:1293:in `loop'
        from org/jruby/RubyKernel.java:1100:in `catch'
        from console:13:in `block in console'
        from org/jruby/RubyKernel.java:1100:in `catch'
        from console:13:in `<top>'

This is fine on jruby-1.7.19:

$ bundle exec jruby console
jruby-1.7.19 :001 > require 'readline'
 => false

example is broken?

I tried the example and I get this error in example/my_project:

$ jruby -S bundle exec info.rb
NameError: uninitialized constant JBundler::Maven::Maven3NotFound
      const_missing at org/jruby/RubyModule.java:2642
               home at /Users/docwhat/projects/jbundler/lib/jbundler/aether.rb:45
  setup_classloader at /Users/docwhat/projects/jbundler/lib/jbundler/aether.rb:63
         initialize at /Users/docwhat/projects/jbundler/lib/jbundler/aether.rb:70
             (root) at /Users/docwhat/projects/jbundler/lib/jbundler.rb:12
            require at org/jruby/RubyKernel.java:1033
            require at /Users/docwhat/projects/jbundler/lib/jbundler.rb:68
               each at org/jruby/RubyArray.java:1615
            require at /Users/docwhat/.rvm/gems/jruby-1.6.7/gems/bundler-1.1.3/lib/bundler/runtime.rb:66
               each at org/jruby/RubyArray.java:1615
            require at /Users/docwhat/.rvm/gems/jruby-1.6.7/gems/bundler-1.1.3/lib/bundler/runtime.rb:55
            require at /Users/docwhat/.rvm/gems/jruby-1.6.7/gems/bundler-1.1.3/lib/bundler.rb:119
             (root) at info.rb:1

Ciao!

Dependent jars specified in gem via :path option not added to classpath

Hey @mkristian,

I have two projects, rosette-server and rosette-core. The rosette-core library has a Jarfile that includes a single dependency (org.eclipse:jgit). I have added rosette-core to rosette-server's Gemfile and run jbundle. At first, I got a TypeError because something was trying to dup a nil, but I tracked down the cause and submitted a pull request to the jar-dependencies gem. After patching jar-dependencies, I tried running jbundle again. This time there were no errors, but jgit wasn't detected or bundled (i.e. it wasn't downloaded and it isn't in rosette-server's classpath). Any idea why this isn't working?

Here's how the dependency looks in my Gemfile:

gem 'rosette-core', path: '~/workspace/rosette-core'

RuntimeError: jbundler.jar is missing

After updating my Gemfile to use the master I'm receiving this when running jbundle. I know master probably isn't quite ready after being switched to the new ruby-maven, but I thought I'd report it just so you were aware.

 $ jbundle install
Using i18n (0.6.1) 
Using multi_json (1.3.6) 
Using activesupport (3.2.8) 
Using chunky_png (1.2.6) 
Using coffee-script-source (1.3.3) 
Using execjs (1.4.0) 
Using coffee-script (2.2.0) 
Using fssm (0.2.9) 
Using sass (3.2.1) 
Using compass (0.12.2) 
Using ffi (1.1.5) 
Using haml (3.1.7) 
Using hike (1.2.1) 
Using rack (1.4.1) 
Using url_mount (0.2.1) 
Using http_router (0.10.2) 
Using maven-tools (0.29.3) 
Using thor (0.15.4) 
Using ruby-maven (3.0.4.1) 
Using jbundler (0.3.2) 
Using listen (0.5.3) 
Using syntax (1.0.0) 
Using maruku (0.6.1) 
Using bundler (1.2.1) 
Using rack-test (0.6.2) 
Using rb-fsevent (0.9.2) 
Using rb-inotify (0.8.8) 
Using tilt (1.3.3) 
Using middleman-core (3.0.5) 
Using rack-protection (1.2.0) 
Using sinatra (1.3.3) 
Using padrino-core (0.10.7) 
Using padrino-helpers (0.10.7) 
Using uglifier (1.2.7) 
Using middleman-more (3.0.5) 
Using sprockets (2.4.5) 
Using sprockets-sass (0.8.0) 
Using middleman-sprockets (3.0.4) 
Using middleman (3.0.5) 
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
RuntimeError: jbundler.jar is missing - maybe you need to build it first ? try
$ rmvn prepare-package -Dmaven.test.skip

  setup_classloader at /Users/rmontgomery429/.rvm/gems/jruby-1.6.8@utx/bundler/gems/jbundler-34f22dd2cf02/lib/jbundler/aether.rb:82
         initialize at /Users/rmontgomery429/.rvm/gems/jruby-1.6.8@utx/bundler/gems/jbundler-34f22dd2cf02/lib/jbundler/aether.rb:90
             (root) at /Users/rmontgomery429/.rvm/gems/jruby-1.6.8@utx/bundler/gems/jbundler-34f22dd2cf02/lib/jbundler.rb:16
            require at org/jruby/RubyKernel.java:1062
            install at /Users/rmontgomery429/.rvm/gems/jruby-1.6.8@utx/bundler/gems/jbundler-34f22dd2cf02/lib/jbundler.rb:34
               send at org/jruby/RubyKernel.java:2105
                run at /Users/rmontgomery429/.rvm/gems/jruby-1.6.8@global/gems/bundler-1.2.1/lib/bundler/vendor/thor/task.rb:27
        invoke_task at /Users/rmontgomery429/.rvm/gems/jruby-1.6.8@global/gems/bundler-1.2.1/lib/bundler/vendor/thor/invocation.rb:120
           dispatch at /Users/rmontgomery429/.rvm/gems/jruby-1.6.8@global/gems/bundler-1.2.1/lib/bundler/vendor/thor.rb:275
              start at /Users/rmontgomery429/.rvm/gems/jruby-1.6.8@global/gems/bundler-1.2.1/lib/bundler/vendor/thor/base.rb:408
             (root) at /Users/rmontgomery429/.rvm/gems/jruby-1.6.8@utx/bundler/gems/jbundler-34f22dd2cf02/bin/jbundle:39
               load at org/jruby/RubyKernel.java:1087
                    at /Users/rmontgomery429/.rvm/gems/jruby-1.6.8@utx/bundler/gems/jbundler-34f22dd2cf02/bin/jbundle:19
               eval at org/jruby/RubyKernel.java:1112
             (root) at /Users/rmontgomery429/.rvm/gems/jruby-1.6.8@utx/bin/ruby_noexec_wrapper:14

jbundler 0.6.0 fails on gems with `:platform => [...]` option

This appears to be a regression in 0.6.0.

e.x., a Gemfile containing the following works in 0.5.5:

gem 'debugger', :platform => [:mri_19, :mri_20]

but throws this error in 0.6.0:

[jruby-1.7.10] ~/tmp/jbundle-issue $ cat Gemfile

gem 'debugger', :platform => [:mri_19, :mri_20]

[jruby-1.7.10] ~/tmp/jbundle-issue $ jbundle install
Using bundler 1.6.2
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.
...
NoMethodError: undefined method `to_sym' for [:mri_19, :mri_20]:Array
     is_jruby_platform at /Users/trobinson/.rvm/gems/jruby-1.7.10/gems/maven-tools-1.0.1/lib/maven/tools/dsl.rb:90
                detect at org/jruby/RubyEnumerable.java:573
     is_jruby_platform at /Users/trobinson/.rvm/gems/jruby-1.7.10/gems/maven-tools-1.0.1/lib/maven/tools/dsl.rb:90
                do_gem at /Users/trobinson/.rvm/gems/jruby-1.7.10/gems/maven-tools-1.0.1/lib/maven/tools/dsl.rb:1290
                   gem at /Users/trobinson/.rvm/gems/jruby-1.7.10/gems/maven-tools-1.0.1/lib/maven/tools/dsl.rb:1250
               gemfile at /Users/trobinson/tmp/jbundle-issue/Gemfile:3
                  eval at org/jruby/RubyKernel.java:1119
               gemfile at /Users/trobinson/.rvm/gems/jruby-1.7.10/gems/maven-tools-1.0.1/lib/maven/tools/dsl.rb:125
                 chdir at org/jruby/RubyDir.java:476
                    cd at /Users/trobinson/.rvm/rubies/jruby-1.7.10/lib/ruby/1.9/fileutils.rb:125
               gemfile at /Users/trobinson/.rvm/gems/jruby-1.7.10/gems/maven-tools-1.0.1/lib/maven/tools/dsl.rb:123
                  call at org/jruby/RubyProc.java:271
          nested_block at /Users/trobinson/.rvm/gems/jruby-1.7.10/gems/maven-tools-1.0.1/lib/maven/tools/dsl.rb:1450
               profile at /Users/trobinson/.rvm/gems/jruby-1.7.10/gems/maven-tools-1.0.1/lib/maven/tools/dsl.rb:1199
               gemfile at /Users/trobinson/.rvm/gems/jruby-1.7.10/gems/maven-tools-1.0.1/lib/maven/tools/dsl.rb:118
              eval_pom at /Users/trobinson/.rvm/gems/jruby-1.7.10/gems/jbundler-0.6.0/lib/jbundler/dependency_pom.rb:13
                  call at org/jruby/RubyProc.java:271
          nested_block at /Users/trobinson/.rvm/gems/jruby-1.7.10/gems/maven-tools-1.0.1/lib/maven/tools/dsl.rb:1450
                 tesla at /Users/trobinson/.rvm/gems/jruby-1.7.10/gems/maven-tools-1.0.1/lib/maven/tools/dsl.rb:20
              eval_pom at /Users/trobinson/.rvm/gems/jruby-1.7.10/gems/jbundler-0.6.0/lib/jbundler/dependency_pom.rb:1
                  eval at org/jruby/RubyKernel.java:1119
              eval_pom at /Users/trobinson/.rvm/gems/jruby-1.7.10/gems/maven-tools-1.0.1/lib/maven/tools/dsl.rb:51
                 parse at parser.rb:74
          launch_jruby at /Users/trobinson/.rvm/gems/jruby-1.7.10/gems/ruby-maven-3.1.1.0.7/ruby/maven/ruby/maven.rb:60
                launch at /Users/trobinson/.rvm/gems/jruby-1.7.10/gems/ruby-maven-3.1.1.0.7/ruby/maven/ruby/maven.rb:155
                  exec at /Users/trobinson/.rvm/gems/jruby-1.7.10/gems/ruby-maven-3.1.1.0.7/ruby/maven/ruby/maven.rb:145
        with_clean_env at /Users/trobinson/.rvm/gems/jruby-1.7.10@global/gems/bundler-1.6.2/lib/bundler.rb:235
     with_original_env at /Users/trobinson/.rvm/gems/jruby-1.7.10@global/gems/bundler-1.6.2/lib/bundler.rb:222
        with_clean_env at /Users/trobinson/.rvm/gems/jruby-1.7.10@global/gems/bundler-1.6.2/lib/bundler.rb:228
                  exec at /Users/trobinson/.rvm/gems/jruby-1.7.10/gems/ruby-maven-3.1.1.0.7/ruby/maven/ruby/maven.rb:144
            exec_maven at /Users/trobinson/.rvm/gems/jruby-1.7.10/gems/jbundler-0.6.0/lib/jbundler/lock_down.rb:135
  install_dependencies at /Users/trobinson/.rvm/gems/jruby-1.7.10/gems/jbundler-0.6.0/lib/jbundler/lock_down.rb:110
             lock_down at /Users/trobinson/.rvm/gems/jruby-1.7.10/gems/jbundler-0.6.0/lib/jbundler/lock_down.rb:45
               install at /Users/trobinson/.rvm/gems/jruby-1.7.10/gems/jbundler-0.6.0/lib/jbundler/cli.rb:92
                   run at /Users/trobinson/.rvm/gems/jruby-1.7.10@global/gems/bundler-1.6.2/lib/bundler/vendor/thor/command.rb:27
        invoke_command at /Users/trobinson/.rvm/gems/jruby-1.7.10@global/gems/bundler-1.6.2/lib/bundler/vendor/thor/invocation.rb:121
              dispatch at /Users/trobinson/.rvm/gems/jruby-1.7.10@global/gems/bundler-1.6.2/lib/bundler/vendor/thor.rb:363
                 start at /Users/trobinson/.rvm/gems/jruby-1.7.10@global/gems/bundler-1.6.2/lib/bundler/vendor/thor/base.rb:440
                (root) at /Users/trobinson/.rvm/gems/jruby-1.7.10/gems/jbundler-0.6.0/bin/jbundle:47
                  load at org/jruby/RubyKernel.java:1099
                (root) at /Users/trobinson/.rvm/gems/jruby-1.7.10/bin/jbundle:1
                  eval at org/jruby/RubyKernel.java:1119
                (root) at /Users/trobinson/.rvm/gems/jruby-1.7.10/bin/jruby_executable_hooks:15
[ERROR] Internal error: org.jruby.embed.InvokeFailedException: (NoMethodError) undefined method `to_sym' for [:mri_19, :mri_20]:Array -> [Help 1]
org.apache.maven.InternalErrorException: Internal error: org.jruby.embed.InvokeFailedException: (NoMethodError) undefined method `to_sym' for [:mri_19, :mri_20]:Array
  at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:164)
  at org.apache.maven.cli.MavenCli.execute(MavenCli.java:555)
  at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214)
  at org.apache.maven.cli.PolyglotMavenCli.main(PolyglotMavenCli.java:64)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:606)
  at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
  at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
  at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:606)
  at org.jruby.javasupport.JavaMethod.invokeDirectWithExceptionHandling(JavaMethod.java:455)
  at org.jruby.javasupport.JavaMethod.invokeStaticDirect(JavaMethod.java:367)
  at org.jruby.java.invokers.StaticMethodInvoker.call(StaticMethodInvoker.java:60)
  at org.jruby.internal.runtime.methods.AliasMethod.call(AliasMethod.java:61)
  at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
  at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
  at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
  at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
  at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
  at org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
  at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
  at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:182)
  at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:198)
  at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
  at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
  at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
  at org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
  at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
  at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
  at org.jruby.ast.IfNode.interpret(IfNode.java:116)
  at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
  at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
  at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
  at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:182)
  at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:198)
  at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
  at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
  at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
  at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
  at org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
  at org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:206)
  at org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:157)
  at org.jruby.runtime.Interpreted19Block.yieldSpecific(Interpreted19Block.java:130)
  at org.jruby.runtime.Block.yieldSpecific(Block.java:111)
  at org.jruby.ast.ZYieldNode.interpret(ZYieldNode.java:25)
  at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
  at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
  at org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
  at org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:206)
  at org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:157)
  at org.jruby.runtime.Interpreted19Block.yieldSpecific(Interpreted19Block.java:130)
  at org.jruby.runtime.Block.yieldSpecific(Block.java:111)
  at org.jruby.ast.ZYieldNode.interpret(ZYieldNode.java:25)
  at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
  at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
  at org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
  at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
  at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:161)
  at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:190)
  at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:316)
  at org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:145)
  at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:154)
  at org.jruby.ast.FCallNoArgBlockNode.interpret(FCallNoArgBlockNode.java:32)
  at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
  at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
  at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:161)
  at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:190)
  at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:316)
  at org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:145)
  at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:154)
  at org.jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:64)
  at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
  at org.jruby.ast.IfNode.interpret(IfNode.java:116)
  at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
  at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
  at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
  at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:182)
  at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:198)
  at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
  at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
  at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
  at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
  at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
  at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
  at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:268)
  at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:230)
  at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:366)
  at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:238)
  at org.jruby.ast.FCallThreeArgNode.interpret(FCallThreeArgNode.java:40)
  at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
  at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
  at org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
  at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
  at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:225)
  at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:214)
  at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:346)
  at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:204)
  at org.jruby.ast.FCallTwoArgNode.interpret(FCallTwoArgNode.java:38)
  at org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
  at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
  at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
  at org.jruby.ast.IfNode.interpret(IfNode.java:118)
  at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
  at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
  at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
  at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:268)
  at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:230)
  at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:366)
  at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:238)
  at org.jruby.ast.CallThreeArgNode.interpret(CallThreeArgNode.java:61)
  at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
  at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
  at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
  at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:161)
  at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:190)
  at org.jruby.RubyClass.finvoke(RubyClass.java:527)
  at org.jruby.RubyBasicObject.send19(RubyBasicObject.java:1504)
  at org.jruby.RubyBasicObject$INVOKER$i$send19.call(RubyBasicObject$INVOKER$i$send19.gen)
  at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodOneOrNBlock.call(JavaMethod.java:350)
  at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
  at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
  at org.jruby.ast.CallSpecialArgNode.interpret(CallSpecialArgNode.java:67)
  at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
  at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
  at org.jruby.ast.IfNode.interpret(IfNode.java:116)
  at org.jruby.ast.IfNode.interpret(IfNode.java:118)
  at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
  at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
  at org.jruby.ast.RescueNode.executeBody(RescueNode.java:221)
  at org.jruby.ast.RescueNode.interpret(RescueNode.java:116)
  at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
  at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:225)
  at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:214)
  at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:202)
  at org.jruby.ast.CallSpecialArgNode.interpret(CallSpecialArgNode.java:69)
  at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
  at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
  at org.jruby.ast.IfNode.interpret(IfNode.java:118)
  at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
  at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
  at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
  at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:225)
  at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:214)
  at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:346)
  at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:204)
  at org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)
  at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
  at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
  at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
  at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:112)
  at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:126)
  at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:173)
  at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:296)
  at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:72)
  at org.jruby.ast.FCallManyArgsNode.interpret(FCallManyArgsNode.java:60)
  at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
  at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
  at org.jruby.ast.RescueNode.executeBody(RescueNode.java:221)
  at org.jruby.ast.RescueNode.interpret(RescueNode.java:116)
  at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
  at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:139)
  at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:182)
  at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:306)
  at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:136)
  at org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:60)
  at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
  at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
  at org.jruby.ast.RescueNode.executeBody(RescueNode.java:221)
  at org.jruby.ast.RescueNode.interpret(RescueNode.java:116)
  at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
  at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
  at org.jruby.ast.IfNode.interpret(IfNode.java:116)
  at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
  at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
  at org.jruby.ast.IfNode.interpret(IfNode.java:118)
  at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
  at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
  at org.jruby.ast.RootNode.interpret(RootNode.java:129)
  at org.jruby.evaluator.ASTInterpreter.INTERPRET_ROOT(ASTInterpreter.java:121)
  at org.jruby.Ruby.runInterpreter(Ruby.java:838)
  at org.jruby.Ruby.loadFile(Ruby.java:2750)
  at org.jruby.runtime.load.ExternalScript.load(ExternalScript.java:66)
  at org.jruby.runtime.load.LoadService.load(LoadService.java:359)
  at org.jruby.RubyKernel.loadCommon(RubyKernel.java:1107)
  at org.jruby.RubyKernel.load19(RubyKernel.java:1099)
  at org.jruby.RubyKernel$INVOKER$s$0$1$load19.call(RubyKernel$INVOKER$s$0$1$load19.gen)
  at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:210)
  at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:206)
  at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
  at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
  at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
  at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
  at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
  at org.jruby.ast.RootNode.interpret(RootNode.java:129)
  at org.jruby.evaluator.ASTInterpreter.INTERPRET_EVAL(ASTInterpreter.java:95)
  at org.jruby.evaluator.ASTInterpreter.evalWithBinding(ASTInterpreter.java:184)
  at org.jruby.RubyKernel.evalCommon(RubyKernel.java:1156)
  at org.jruby.RubyKernel.eval19(RubyKernel.java:1119)
  at org.jruby.RubyKernel$INVOKER$s$0$3$eval19.call(RubyKernel$INVOKER$s$0$3$eval19.gen)
  at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:226)
  at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:222)
  at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:366)
  at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:238)
  at Users.trobinson.$_dot_rvm.gems.jruby_minus_1_dot_7_dot_10.bin.jruby_executable_hooks.__file__(/Users/trobinson/.rvm/gems/jruby-1.7.10/bin/jruby_executable_hooks:15)
  at Users.trobinson.$_dot_rvm.gems.jruby_minus_1_dot_7_dot_10.bin.jruby_executable_hooks.load(/Users/trobinson/.rvm/gems/jruby-1.7.10/bin/jruby_executable_hooks)
  at org.jruby.Ruby.runScript(Ruby.java:811)
  at org.jruby.Ruby.runScript(Ruby.java:804)
  at org.jruby.Ruby.runNormally(Ruby.java:673)
  at org.jruby.Ruby.runFromMain(Ruby.java:522)
  at org.jruby.Main.doRunFromMain(Main.java:395)
  at org.jruby.Main.internalRun(Main.java:290)
  at org.jruby.Main.run(Main.java:217)
  at org.jruby.Main.main(Main.java:197)
Caused by: org.jruby.embed.InvokeFailedException: (NoMethodError) undefined method `to_sym' for [:mri_19, :mri_20]:Array
  at org.jruby.embed.internal.EmbedRubyObjectAdapterImpl.call(EmbedRubyObjectAdapterImpl.java:317)
  at org.jruby.embed.internal.EmbedRubyObjectAdapterImpl.callMethod(EmbedRubyObjectAdapterImpl.java:169)
  at org.jruby.embed.ScriptingContainer.callMethod(ScriptingContainer.java:1432)
  at org.sonatype.maven.polyglot.ruby.RubyParser.parse(RubyParser.java:66)
  at org.sonatype.maven.polyglot.ruby.RubyModelReader.read(RubyModelReader.java:63)
  at org.sonatype.maven.polyglot.TeslaModelProcessor.read(TeslaModelProcessor.java:136)
  at org.sonatype.maven.polyglot.TeslaModelProcessor.read(TeslaModelProcessor.java:86)
  at org.apache.maven.model.building.DefaultModelBuilder.readModel(DefaultModelBuilder.java:453)
  at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:256)
  at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:411)
  at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:380)
  at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:344)
  at org.apache.maven.DefaultMaven.collectProjects(DefaultMaven.java:637)
  at org.apache.maven.DefaultMaven.getProjectsForMavenReactor(DefaultMaven.java:586)
  at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:229)
  at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:152)
  ... 217 more
Caused by: org.jruby.exceptions.RaiseException: (NoMethodError) undefined method `to_sym' for [:mri_19, :mri_20]:Array
  at RUBY.is_jruby_platform(/Users/trobinson/.rvm/gems/jruby-1.7.10/gems/maven-tools-1.0.1/lib/maven/tools/dsl.rb:90)
  at org.jruby.RubyEnumerable.detect(org/jruby/RubyEnumerable.java:573)
  at RUBY.is_jruby_platform(/Users/trobinson/.rvm/gems/jruby-1.7.10/gems/maven-tools-1.0.1/lib/maven/tools/dsl.rb:90)
  at RUBY.do_gem(/Users/trobinson/.rvm/gems/jruby-1.7.10/gems/maven-tools-1.0.1/lib/maven/tools/dsl.rb:1290)
  at RUBY.gem(/Users/trobinson/.rvm/gems/jruby-1.7.10/gems/maven-tools-1.0.1/lib/maven/tools/dsl.rb:1250)
  at RUBY.gemfile(/Users/trobinson/tmp/jbundle-issue/Gemfile:3)
  at org.jruby.RubyKernel.eval(org/jruby/RubyKernel.java:1119)
  at RUBY.gemfile(/Users/trobinson/.rvm/gems/jruby-1.7.10/gems/maven-tools-1.0.1/lib/maven/tools/dsl.rb:125)
  at org.jruby.RubyDir.chdir(org/jruby/RubyDir.java:476)
  at RUBY.cd(/Users/trobinson/.rvm/rubies/jruby-1.7.10/lib/ruby/1.9/fileutils.rb:125)
  at RUBY.gemfile(/Users/trobinson/.rvm/gems/jruby-1.7.10/gems/maven-tools-1.0.1/lib/maven/tools/dsl.rb:123)
  at org.jruby.RubyProc.call(org/jruby/RubyProc.java:271)
  at RUBY.nested_block(/Users/trobinson/.rvm/gems/jruby-1.7.10/gems/maven-tools-1.0.1/lib/maven/tools/dsl.rb:1450)
  at RUBY.profile(/Users/trobinson/.rvm/gems/jruby-1.7.10/gems/maven-tools-1.0.1/lib/maven/tools/dsl.rb:1199)
  at RUBY.gemfile(/Users/trobinson/.rvm/gems/jruby-1.7.10/gems/maven-tools-1.0.1/lib/maven/tools/dsl.rb:118)
  at RUBY.eval_pom(/Users/trobinson/.rvm/gems/jruby-1.7.10/gems/jbundler-0.6.0/lib/jbundler/dependency_pom.rb:13)
  at org.jruby.RubyProc.call(org/jruby/RubyProc.java:271)
  at RUBY.nested_block(/Users/trobinson/.rvm/gems/jruby-1.7.10/gems/maven-tools-1.0.1/lib/maven/tools/dsl.rb:1450)
  at RUBY.tesla(/Users/trobinson/.rvm/gems/jruby-1.7.10/gems/maven-tools-1.0.1/lib/maven/tools/dsl.rb:20)
  at RUBY.eval_pom(/Users/trobinson/.rvm/gems/jruby-1.7.10/gems/jbundler-0.6.0/lib/jbundler/dependency_pom.rb:1)
  at org.jruby.RubyKernel.eval(org/jruby/RubyKernel.java:1119)
  at RUBY.eval_pom(/Users/trobinson/.rvm/gems/jruby-1.7.10/gems/maven-tools-1.0.1/lib/maven/tools/dsl.rb:51)
  at RUBY.parse(parser.rb:74)
  at RUBY.launch_jruby(/Users/trobinson/.rvm/gems/jruby-1.7.10/gems/ruby-maven-3.1.1.0.7/ruby/maven/ruby/maven.rb:60)
  at RUBY.launch(/Users/trobinson/.rvm/gems/jruby-1.7.10/gems/ruby-maven-3.1.1.0.7/ruby/maven/ruby/maven.rb:155)
  at RUBY.exec(/Users/trobinson/.rvm/gems/jruby-1.7.10/gems/ruby-maven-3.1.1.0.7/ruby/maven/ruby/maven.rb:145)
  at RUBY.with_clean_env(/Users/trobinson/.rvm/gems/jruby-1.7.10@global/gems/bundler-1.6.2/lib/bundler.rb:235)
  at RUBY.with_original_env(/Users/trobinson/.rvm/gems/jruby-1.7.10@global/gems/bundler-1.6.2/lib/bundler.rb:222)
  at RUBY.with_clean_env(/Users/trobinson/.rvm/gems/jruby-1.7.10@global/gems/bundler-1.6.2/lib/bundler.rb:228)
  at RUBY.exec(/Users/trobinson/.rvm/gems/jruby-1.7.10/gems/ruby-maven-3.1.1.0.7/ruby/maven/ruby/maven.rb:144)
  at RUBY.exec_maven(/Users/trobinson/.rvm/gems/jruby-1.7.10/gems/jbundler-0.6.0/lib/jbundler/lock_down.rb:135)
  at RUBY.install_dependencies(/Users/trobinson/.rvm/gems/jruby-1.7.10/gems/jbundler-0.6.0/lib/jbundler/lock_down.rb:110)
  at RUBY.lock_down(/Users/trobinson/.rvm/gems/jruby-1.7.10/gems/jbundler-0.6.0/lib/jbundler/lock_down.rb:45)
  at RUBY.install(/Users/trobinson/.rvm/gems/jruby-1.7.10/gems/jbundler-0.6.0/lib/jbundler/cli.rb:92)
  at RUBY.run(/Users/trobinson/.rvm/gems/jruby-1.7.10@global/gems/bundler-1.6.2/lib/bundler/vendor/thor/command.rb:27)
  at RUBY.invoke_command(/Users/trobinson/.rvm/gems/jruby-1.7.10@global/gems/bundler-1.6.2/lib/bundler/vendor/thor/invocation.rb:121)
  at RUBY.dispatch(/Users/trobinson/.rvm/gems/jruby-1.7.10@global/gems/bundler-1.6.2/lib/bundler/vendor/thor.rb:363)
  at RUBY.start(/Users/trobinson/.rvm/gems/jruby-1.7.10@global/gems/bundler-1.6.2/lib/bundler/vendor/thor/base.rb:440)
  at RUBY.(root)(/Users/trobinson/.rvm/gems/jruby-1.7.10/gems/jbundler-0.6.0/bin/jbundle:47)
  at org.jruby.RubyKernel.load(org/jruby/RubyKernel.java:1099)
  at RUBY.(root)(/Users/trobinson/.rvm/gems/jruby-1.7.10/bin/jbundle:1)
  at org.jruby.RubyKernel.eval(org/jruby/RubyKernel.java:1119)
  at Users.trobinson.$_dot_rvm.gems.jruby_minus_1_dot_7_dot_10.bin.jruby_executable_hooks.(root)(/Users/trobinson/.rvm/gems/jruby-1.7.10/bin/jruby_executable_hooks:15)
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/InternalErrorException
Errno::ENOENT: No such file or directory - /Users/trobinson/tmp/jbundle-issue/pkg/dependencies.txt
                  read at org/jruby/RubyIO.java:3776
                  read at org/jruby/RubyIO.java:3955
  install_dependencies at /Users/trobinson/.rvm/gems/jruby-1.7.10/gems/jbundler-0.6.0/lib/jbundler/lock_down.rb:113
             lock_down at /Users/trobinson/.rvm/gems/jruby-1.7.10/gems/jbundler-0.6.0/lib/jbundler/lock_down.rb:45
               install at /Users/trobinson/.rvm/gems/jruby-1.7.10/gems/jbundler-0.6.0/lib/jbundler/cli.rb:92
                   run at /Users/trobinson/.rvm/gems/jruby-1.7.10@global/gems/bundler-1.6.2/lib/bundler/vendor/thor/command.rb:27
        invoke_command at /Users/trobinson/.rvm/gems/jruby-1.7.10@global/gems/bundler-1.6.2/lib/bundler/vendor/thor/invocation.rb:121
              dispatch at /Users/trobinson/.rvm/gems/jruby-1.7.10@global/gems/bundler-1.6.2/lib/bundler/vendor/thor.rb:363
                 start at /Users/trobinson/.rvm/gems/jruby-1.7.10@global/gems/bundler-1.6.2/lib/bundler/vendor/thor/base.rb:440
                (root) at /Users/trobinson/.rvm/gems/jruby-1.7.10/gems/jbundler-0.6.0/bin/jbundle:47
                  load at org/jruby/RubyKernel.java:1099
                (root) at /Users/trobinson/.rvm/gems/jruby-1.7.10/bin/jbundle:1
                  eval at org/jruby/RubyKernel.java:1119
                (root) at /Users/trobinson/.rvm/gems/jruby-1.7.10/bin/jruby_executable_hooks:15

commons-logging:commons-logging:1.1.13 produces error on install

that is a follow up on #25

maven is able to resolve commons-logging:commons-logging:1.1.13 but jbundler tries to resolve log4j:log4j:1.2.15 along the way and that fails.

even maven fails on log4j:log4j:1.2.15 for the same reason: pom references a maven-1 repository

commons-logging:commons-logging:1.1.13 has log4j:log4j:1.2.17 as optional dependency and some osgi import rules with
org.apache.log4j;version="[1.2.15, 2.0.0)";resolution:=optional

not sure why jbundler aether behaves differently then maven and how those osgi properties come in play

Setting JBUNDLE_SETTINGS has no effect?

I'm running jbundle install in a Jenkins job, and using a globally configured settings.xml to add a private repository. The global settings.xml is exposed to the job by setting the path to it to an environment variable. Setting this path to JBUNDLE_SETTINGS appears to have no effect on jbundler, and the job fails because jars from a private repository are not found. If I manually add the configuration to ~/.m2/settings.xml, jbundle install succeeds.

I've also tried setting JARS_MAVEN_SETTINGS and creating a .jbundlerrc file as well.

Problem with jbundler on jruby-1.7.16

Hello,
I am trying to create gem that depends on jar extension. I think that first problem is with interpolation of $HOME variable. After running this steps on osx:

  • Add 'jbundler' to gemfile
  • Create Jarfile, add one dependent Jar
  • bundle install # to get jbundler installed
  • jbundle install

I found directory called "${user.home}" with .m2 inside. I was thinking that this directory should go directly into $HOME (which is set).

@mkristian, I would appreciate any suggestions ๐Ÿ˜‰.

Ps. I found that wiki is little bit outdated, mainly configuration page.
Ps. 2: I also tried luck with configuration ~/.jbundlerrc (which should be yaml instead key=value) with following content:


---
jars.home: /Users/ernest/.m2/repository
jars.maven.settings: /Users/ernest/.m2/settings.xml

jbundler does not play well with bundler-1.9.x

thor gets vendored differently and causes some weird loading error:

NameError: uninitialized constant Bundler::Thor::Actions::CreateFile
  const_missing at org/jruby/RubyModule.java:2726
        Actions at /home/christian/.rbenv/versions/jruby-1.7.19/lib/ruby/gems/shared/gems/bundler-1.9.1/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb:27
           Thor at /home/christian/.rbenv/versions/jruby-1.7.19/lib/ruby/gems/shared/gems/bundler-1.9.1/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb:4
         (root) at /home/christian/.rbenv/versions/jruby-1.7.19/lib/ruby/gems/shared/gems/bundler-1.9.1/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb:3
        require at org/jruby/RubyKernel.java:1071
        require at /home/christian/.rbenv/versions/jruby-1.7.19/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:69
         (root) at /home/christian/.rbenv/versions/jruby-1.7.19/lib/ruby/gems/shared/gems/bundler-1.9.1/lib/bundler/vendor/thor/lib/thor/actions.rb:1
         (root) at /home/christian/.rbenv/versions/jruby-1.7.19/lib/ruby/gems/shared/gems/bundler-1.9.1/lib/bundler/vendor/thor/lib/thor/actions.rb:5
         (root) at /home/christian/.rbenv/versions/jruby-1.7.19/lib/ruby/gems/shared/gems/bundler-1.9.1/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb:1
        require at org/jruby/RubyKernel.java:1071
        require at /home/christian/.rbenv/versions/jruby-1.7.19/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:69
           Thor at /home/christian/.rbenv/versions/jruby-1.7.19/lib/ruby/gems/shared/gems/bundler-1.9.1/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb:2
        require at org/jruby/RubyKernel.java:1071
        require at /home/christian/.rbenv/versions/jruby-1.7.19/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:69
         (root) at /home/christian/.rbenv/versions/jruby-1.7.19/lib/ruby/gems/shared/gems/bundler-1.9.1/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb:1
        require at org/jruby/RubyKernel.java:1071
        require at /home/christian/.rbenv/versions/jruby-1.7.19/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:69
         (root) at /home/christian/.rbenv/versions/jruby-1.7.19/lib/ruby/gems/shared/gems/bundler-1.9.1/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb:1
        require at org/jruby/RubyKernel.java:1071
         (root) at /home/christian/.rbenv/versions/jruby-1.7.19/lib/ruby/gems/shared/gems/bundler-1.9.1/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb:1
         (root) at /home/christian/.rbenv/versions/jruby-1.7.19/lib/ruby/gems/shared/gems/bundler-1.9.1/lib/bundler/vendor/thor/lib/thor/actions.rb:1
        require at org/jruby/RubyKernel.java:1071
         (root) at /home/christian/.rbenv/versions/jruby-1.7.19/lib/ruby/gems/shared/gems/bundler-1.9.1/lib/bundler/vendor/thor/lib/thor/actions.rb:4
         (root) at /home/christian/.rbenv/versions/jruby-1.7.19/lib/ruby/gems/shared/gems/bundler-1.9.1/lib/bundler/vendored_thor.rb:1
           load at org/jruby/RubyKernel.java:1087
         (root) at /home/christian/.rbenv/versions/jruby-1.7.19/lib/ruby/gems/shared/gems/bundler-1.9.1/lib/bundler/vendored_thor.rb:3
           load at org/jruby/RubyKernel.java:1087
         (root) at /home/christian/.rbenv/versions/jruby-1.7.19/bin/jbundle:23

NoClassDefFoundError: org/bouncycastle/asn1/DERBoolean when using jbundler with trinidad

I am getting some kind of bad interaction between jruby, trinidad and jbundler which means whenever I try to start trinidad I get a NoClassDefFoundError: org/bouncycastle/asn1/DERBoolean

After having spent several hours trying to figure it out myself I am a bit at a loss as to what the problem is. But I have managed to reduce the problem so that I can reproduce it with this gist: https://gist.github.com/griff/935a5f1f903c0455d1ee

I can say that if there is no Jarfile or I don't require jbundler I don't get the error so I am pretty sure that it is a jbundler problem.

Could not resolve dependencies error

I get a slightly odd 'could not resolve dependencies' error when running jbundle install, which looks like it is searching in the wrong place:

[ERROR] Failed to execute goal on project jbundler: Could not resolve dependencies for project dummy:jbundler:jar:0.0.0: Could not find artifact com.mycompany:myartifact:jar:0.0.1-SNAPSHOT in rubygems-releases (http://rubygems-proxy.torquebox.org/releases) -> [Help 1]

Weirdness from my perspective includes:

  1. It's hitting a torquebox gem server, but torquebox is not present in this project's gem file
  2. The dummy jbundler jar bit is odd as well
  3. If there is a network error in finding the private repo (although I'm not sure if this is what has happened), I would normally expect to see a Maven-like error about being unable to find the repo

The Jarfile looks like

snapshot_repository "http://[ip address]/artifactory/"
jar 'com.mycompany:myartifact', '0.0.1-SNAPSHOT'

Cannot load gems when running JAR

Running a JAR built from the JBundler example project in src/example/my_project yields the following error:

LoadError: no such file to load -- rubygems
  require at org/jruby/RubyKernel.java:1065
   (root) at classpath:jar-bootstrap.rb:21

The JAR was built with:

jbundle install
jbundle executable -b info.rb

jbundle crashes if ~/.bundle/config is empty or does not exist

zsh% jbundle
Errno::ENOENT: No such file or directory - /Users/mattias/.bundle/config
  initialize at org/jruby/RubyFile.java:334
        open at org/jruby/RubyIO.java:1144
   load_file at /Users/mattias/.rvm/rubies/jruby-1.7.4/lib/ruby/shared/psych.rb:299
      (root) at /Users/mattias/.rvm/gems/jruby-1.7.4/gems/jbundler-0.5.0/bin/jbundle:28
        load at org/jruby/RubyKernel.java:1073
      (root) at /Users/mattias/.rvm/gems/jruby-1.7.4/bin/jbundle:1
        eval at org/jruby/RubyKernel.java:1093
      (root) at /Users/mattias/.rvm/gems/jruby-1.7.4/bin/ruby_noexec_wrapper:14
zsh% touch ~/.bundle/config
zsh% jbundle
NoMethodError: private method `select' called for false:FalseClass
  (root) at /Users/mattias/.rvm/gems/jruby-1.7.4/gems/jbundler-0.5.0/bin/jbundle:31
    load at org/jruby/RubyKernel.java:1073
  (root) at /Users/mattias/.rvm/gems/jruby-1.7.4/bin/jbundle:1
    eval at org/jruby/RubyKernel.java:1093
  (root) at /Users/mattias/.rvm/gems/jruby-1.7.4/bin/ruby_noexec_wrapper:14
zsh% bundle config a b
zsh% jbundle
Using backports (3.3.4)
Using descendants_tracker (0.0.1)
.
.
.

JBUNDLE_LOCAL_REPOSITORY should not be cached in classpath.rb

After installing jars with jbundler, the .jbundler/classpath.rb file contains the resolved path for JBUNDLE_LOCAL_REPOSITORY.

Perhaps jbundler should instead leave that portion of the file out and utilize it at run time when calling JBundler::ClasspathFile.require_test_classpath or JBundler::ClasspathFile.require_classpath

[edit]
This would support my use case of using the same project folder from two different environments/VMs. I would like to be able to change JBUNDLE_LOCAL_REPOSITORY then run jbundle install and have it install or update accordingly.

Get Maven dependencies on bundle install

I was wondering if it's possible to do the Mvnfile resolution during the bundle install phase instead of requiring a bundle exec some-ruby-code.rb? This will make it more intuitive for people who pick up projects that use jbundler, they just need to bundle install and everything works.

Integration Jbundler in Logstash

Hi,

We would like to use Jbundler on Logstash to manage the jar dependencies for plugins.
We would prefer to do it in a way that gem does so we can simply say:

install this plugin ( gem install logstash-output-elasticsearch for example ) and it downloads all ruby + java dependencies for us.

Is it possible with the current jbundler code to do something like that?

Or would it be possible to give jbundler api the content of a Gemfile/Jarfile which has the info?
The main thing i'm trying to avoid is having to call jbundler on the command line.

Thanks for your time :-)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.