JRuby wrapper around some parts of Aether
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
lib
test
.gitignore
COPYING
ChangeLog
Gemfile
README.md
Rakefile
VERSION
mini_aether.gemspec

README.md

MiniAether

JRuby wrapper around some parts of Aether, the library underlying the Maven build and dependency management tool.

  • Bootstraps itself by downloading Aether components directly from the Maven Central repository.
  • Installs JARs into the standard Maven location ~/.m2/repository.
  • Loads Aether libs in separate JRuby with own classloader to avoid contaminating the primary classloader.

I feel that JRuby/maven/rubygems integration is lacking in many areas. There are various attempts to improve this. See JBundler and LockJar for example. So I'm not sure what role MiniAether will play, if any.

require 'mini_aether'

MiniAether.setup do
  group 'org.sonatype.aether' do
    version '1.13.1' do
      jar 'aether-api'
      jar 'aether-impl'
    end
  end

  jar 'com.ning:async-http-client:1.6.5'

  # alternate syntax
  dep(:group_id => 'org.slf4j',
      :artifact_id => 'slf4j-api',
      :version => '1.6.2',
      :extension => 'jar')  # 'jar' is the default if none is given

  group 'org.codehaus.plexus' do
    jar 'plexus-utils:2.0.6'
  end
end

At this point, all those jars and their dependencies will be loaded into the current JRuby.

Convenience require_aether

An experimental convenience method, possibly best used in an irb session:

> require 'mini_aether/require'
> require_aether 'org.slf4j:slf4j-api:1.7.2'
> require_aether 'com.example:artifact:1.0', :source => 'http://maven.example.com/'

Tests

rake test

Note: the unit tests download artifacts from the Maven central repository into temp files and into ~/.m2/repository.