Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mkristian/jbundler
bundler support for jars for jruby
https://github.com/mkristian/jbundler
Last synced: 14 days ago
JSON representation
bundler support for jars for jruby
- Host: GitHub
- URL: https://github.com/mkristian/jbundler
- Owner: mkristian
- License: mit
- Created: 2012-04-01T20:23:57.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2022-08-08T12:14:21.000Z (over 2 years ago)
- Last Synced: 2024-10-04T01:42:23.328Z (about 1 month ago)
- Language: Ruby
- Homepage:
- Size: 2.64 MB
- Stars: 211
- Watchers: 8
- Forks: 39
- Open Issues: 26
-
Metadata Files:
- Readme: Readme.md
- License: MIT-LICENSE
Awesome Lists containing this project
README
# jbundler
* [![Build Status](https://secure.travis-ci.org/mkristian/jbundler.svg)](http://travis-ci.org/mkristian/jbundler)
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 classpathdifferences 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:
```bash
jruby -S gem install jbundler
```First, create a **Jarfile**, something like:
```bash
jar 'org.yaml:snakeyaml', '1.14'
jar 'org.slf4j:slf4j-simple', '>1.1'
```Install jar dependencies
```bash
jruby -S jbundle install
```Loading the jar files
```bash
require 'jbundler'
```It will add all the jar dependencies in the java classpath from the `Jarfile.lock`.
### Jarfile
More info about the **[Jarfile](https://github.com/torquebox/maven-tools/wiki/Jarfile)** and about [versions](https://github.com/torquebox/maven-tools/wiki/Versions).
For adding a maven repository see [Jarfile](https://github.com/torquebox/maven-tools/wiki/Jarfile).
## Building the jbundler gem
Running the integration test
```bash
./mvnw verify
./mvnw clean verify
```
or a single integration test
```bash
./mvnw verify -Dinvoker.test=running_rspec_via_rake
./mvnw clean verify -Dinvoker.test=running_rspec_via_rake
```Building the gem (see ./pkg)
```bash
./mvnw package -Dinvoker.skip
```Or just
```bash
gem build jbundler.gemspec
```## Usage
Here is an example usage of the AliasEvent class from the snakeyaml package
```ruby
#test_file.rb
require 'jbundler'
require 'java'java_import 'org.yaml.snakeyaml.events.AliasEvent'
class TestClass
def my_method
puts AliasEvent.methods
end
endTestClass.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](https://github.com/carlhuda/bundler/pull/1683). 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](https://github.com/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 RequestMeta-fu
-------enjoy :)