jbundler 0.9.1 → 0.9.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/Gemfile.lock +15 -15
- data/Readme.md +71 -38
- data/lib/jbundler/cli.rb +10 -8
- data/lib/jbundler/lock_down.rb +1 -1
- data/lib/jbundler/vendor.rb +1 -1
- data/spec/config_spec.rb +3 -2
- data/spec/project/Settings.xml +0 -0
- metadata +48 -40
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 3bf1c75c37037220f7f47c4a02205fcfa814ef8cab027fa45ef111cca5052f9e
|
4
|
+
data.tar.gz: dc85176e4dc8239f3cfcdaa9006d7265d62d793fcb930c9269ae5f89e969bee1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4663268fac15d1938833a253276280f652a8c82e039d7103100e7132d764e2e6371d27e188fc133d564bc9ef922fb74165da4c1c41d670a0e21e49d6ccdc43e8
|
7
|
+
data.tar.gz: eb2d73a9246bb8f5a5b30c967868e73db16eb08aa6717bff993737b5cc65043503410a06f6e8698099abda97d67bd705ba529606940ee22ac3b97642eb15f167
|
data/Gemfile.lock
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
jbundler (0.9.
|
5
|
-
bundler (
|
6
|
-
jar-dependencies (~> 0.
|
7
|
-
maven-tools (~> 1.
|
8
|
-
ruby-maven (~> 3.3, >= 3.3.
|
4
|
+
jbundler (0.9.4)
|
5
|
+
bundler (> 1.5, < 3.0.0)
|
6
|
+
jar-dependencies (~> 0.3)
|
7
|
+
maven-tools (~> 1.1)
|
8
|
+
ruby-maven (~> 3.3, >= 3.3.8)
|
9
9
|
|
10
10
|
GEM
|
11
11
|
remote: https://rubygems.org/
|
@@ -19,16 +19,16 @@ GEM
|
|
19
19
|
descendants_tracker (0.0.4)
|
20
20
|
thread_safe (~> 0.3, >= 0.3.1)
|
21
21
|
equalizer (0.0.11)
|
22
|
-
ice_nine (0.11.
|
23
|
-
jar-dependencies (0.
|
24
|
-
maven-tools (1.
|
22
|
+
ice_nine (0.11.2)
|
23
|
+
jar-dependencies (0.4.0)
|
24
|
+
maven-tools (1.1.6)
|
25
25
|
virtus (~> 1.0)
|
26
|
-
minitest (5.
|
27
|
-
rake (10.
|
28
|
-
ruby-maven (3.3.
|
29
|
-
ruby-maven-libs (~> 3.3.
|
30
|
-
ruby-maven-libs (3.3.
|
31
|
-
thread_safe (0.3.
|
26
|
+
minitest (5.14.0)
|
27
|
+
rake (10.5.0)
|
28
|
+
ruby-maven (3.3.12)
|
29
|
+
ruby-maven-libs (~> 3.3.9)
|
30
|
+
ruby-maven-libs (3.3.9)
|
31
|
+
thread_safe (0.3.6-java)
|
32
32
|
virtus (1.0.5)
|
33
33
|
axiom-types (~> 0.1)
|
34
34
|
coercible (~> 1.0)
|
@@ -45,4 +45,4 @@ DEPENDENCIES
|
|
45
45
|
rake (~> 10.0)
|
46
46
|
|
47
47
|
BUNDLED WITH
|
48
|
-
1.
|
48
|
+
2.1.4
|
data/Readme.md
CHANGED
@@ -1,68 +1,101 @@
|
|
1
|
-
# jbundler
|
1
|
+
# jbundler
|
2
2
|
|
3
|
-
* [![Build Status](https://secure.travis-ci.org/mkristian/jbundler.
|
3
|
+
* [![Build Status](https://secure.travis-ci.org/mkristian/jbundler.svg)](http://travis-ci.org/mkristian/jbundler)
|
4
4
|
|
5
|
-
|
5
|
+
Manage jar dependencies similar to how **bundler** manages gem dependencies:
|
6
6
|
|
7
7
|
* the DSL mimics the one from bundler
|
8
|
-
* you can use maven
|
8
|
+
* you can use maven-like version declarations or rubygems/bundler version ranges
|
9
9
|
* it locks down the jar versions inside "Jarfile.lock"
|
10
|
-
* you can declare jar
|
10
|
+
* 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
|
11
11
|
|
12
|
-
|
12
|
+
differences compared to **bundler**
|
13
13
|
|
14
|
-
*
|
15
|
-
*
|
16
|
-
* all one command ```jbundle```, see ```jbundle --help``` on the possible options and how to update a single jar, etc.
|
14
|
+
* you need to run ```bundle install``` first if any of the gems have jar dependencies.
|
15
|
+
* all one command ```jbundle```, see ```jbundle help``` on the possible options and how to update a single jar, etc.
|
17
16
|
|
18
|
-
##
|
17
|
+
## Get started
|
19
18
|
|
20
|
-
|
19
|
+
Install JBundler with:
|
20
|
+
```bash
|
21
|
+
jruby -S gem install jbundler
|
22
|
+
```
|
21
23
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
24
|
+
First, create a **Jarfile**, something like:
|
25
|
+
```bash
|
26
|
+
jar 'org.yaml:snakeyaml', '1.14'
|
27
|
+
jar 'org.slf4j:slf4j-simple', '>1.1'
|
28
|
+
```
|
29
|
+
|
30
|
+
Install jar dependencies
|
31
|
+
```bash
|
32
|
+
jruby -S jbundle install
|
33
|
+
```
|
34
|
+
|
35
|
+
Loading the jar files
|
36
|
+
```bash
|
37
|
+
require 'jbundler'
|
38
|
+
```
|
39
|
+
|
40
|
+
It will add all the jar dependencies in the java classpath from the `Jarfile.lock`.
|
28
41
|
|
29
42
|
### Jarfile
|
30
43
|
|
31
|
-
|
44
|
+
More info about the **[Jarfile](https://github.com/torquebox/maven-tools/wiki/Jarfile)** and about [versions](https://github.com/torquebox/maven-tools/wiki/Versions).
|
32
45
|
|
33
|
-
|
46
|
+
For adding a maven repository see [Jarfile](https://github.com/torquebox/maven-tools/wiki/Jarfile).
|
34
47
|
|
35
|
-
|
48
|
+
## Building the jbundler gem
|
36
49
|
|
37
|
-
|
50
|
+
Running the integration test
|
38
51
|
|
39
|
-
|
52
|
+
```bash
|
53
|
+
./mvnw verify
|
54
|
+
./mvnw clean verify
|
55
|
+
```
|
56
|
+
or a single integration test
|
57
|
+
```bash
|
58
|
+
./mvnw verify -Dinvoker.test=running_rspec_via_rake
|
59
|
+
./mvnw clean verify -Dinvoker.test=running_rspec_via_rake
|
60
|
+
```
|
40
61
|
|
41
|
-
|
62
|
+
Building the gem (see ./pkg)
|
63
|
+
```bash
|
64
|
+
./mvnw package -Dinvoker.skip
|
65
|
+
```
|
42
66
|
|
43
|
-
|
67
|
+
Or just
|
68
|
+
```bash
|
69
|
+
gem build jbundler.gemspec
|
70
|
+
```
|
44
71
|
|
45
|
-
|
72
|
+
## Usage
|
46
73
|
|
47
|
-
|
74
|
+
Here is an example usage of the AliasEvent class from the snakeyaml package
|
48
75
|
|
49
|
-
|
76
|
+
```ruby
|
77
|
+
#test_file.rb
|
78
|
+
require 'jbundler'
|
79
|
+
require 'java'
|
50
80
|
|
51
|
-
|
81
|
+
java_import 'org.yaml.snakeyaml.events.AliasEvent'
|
52
82
|
|
53
|
-
|
83
|
+
class TestClass
|
84
|
+
def my_method
|
85
|
+
puts AliasEvent.methods
|
86
|
+
end
|
87
|
+
end
|
54
88
|
|
55
|
-
|
56
|
-
|
57
|
-
bundle exec info.rb
|
89
|
+
TestClass.new.my_method
|
90
|
+
```
|
58
91
|
|
59
|
-
##
|
92
|
+
## Limitations
|
60
93
|
|
61
|
-
|
94
|
+
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).
|
62
95
|
|
63
|
-
|
96
|
+
## Special thanks
|
64
97
|
|
65
|
-
|
98
|
+
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.
|
66
99
|
|
67
100
|
License
|
68
101
|
-------
|
@@ -78,7 +111,7 @@ Contributing
|
|
78
111
|
4. Push to the branch (`git push origin my-new-feature`)
|
79
112
|
5. Create new Pull Request
|
80
113
|
|
81
|
-
|
114
|
+
Meta-fu
|
82
115
|
-------
|
83
116
|
|
84
|
-
enjoy :)
|
117
|
+
enjoy :)
|
data/lib/jbundler/cli.rb
CHANGED
@@ -93,7 +93,7 @@ module JBundler
|
|
93
93
|
def console
|
94
94
|
# dummy - never executed !!!
|
95
95
|
end
|
96
|
-
|
96
|
+
|
97
97
|
desc 'lock_down', "first `bundle install` is called and then the jar dependencies will be installed. for more details see `bundle help install`, jbundler will ignore all options. the install command is also the default when no command is given. that is kept as fall back in cases where the new install does not work as before."
|
98
98
|
method_option :deployment, :type => :boolean, :default => false, :desc => "copy the jars into the vendor/jars directory (or as configured). add the vendor/jars $LOAD_PATH and Jars.require_jars_lock! - no need for any jbundler files at runtime !"
|
99
99
|
method_option :no_deployment, :type => :boolean, :default => false, :desc => 'clears the vendored jars'
|
@@ -123,18 +123,20 @@ module JBundler
|
|
123
123
|
end
|
124
124
|
|
125
125
|
desc 'update', "first `bundle update` is called and if there are no options then the jar dependencies will be updated. for more details see `bundle help update`."
|
126
|
-
method_option :debug,
|
126
|
+
method_option :debug, :type => :boolean, :default => false, :desc => 'enable maven debug output (jbundler only).'
|
127
127
|
method_option :verbose, :type => :boolean, :default => false, :desc => 'enable maven output (jbundler only).'
|
128
|
+
method_option :quiet, :type => :boolean
|
128
129
|
def update
|
129
|
-
|
130
|
-
|
131
|
-
JBundler::LockDown.new( config ).update( options[ :debug ] ,
|
132
|
-
options[ :verbose ] )
|
130
|
+
msg = JBundler::LockDown.new( config ).update( options[ :debug ] ,
|
131
|
+
options[ :verbose ] )
|
133
132
|
|
134
133
|
config.verbose = ! options[ :quiet ]
|
135
134
|
Show.new( config ).show_classpath
|
136
|
-
|
137
|
-
|
135
|
+
unless options[ :quiet ]
|
136
|
+
puts ''
|
137
|
+
puts 'Your jbundle is updated! Use `jbundle show` to see where the bundled jars are installed.'
|
138
|
+
end
|
139
|
+
puts msg if msg
|
138
140
|
end
|
139
141
|
|
140
142
|
desc 'show', "first `bundle show` is called and if there are no options then the jar dependencies will be displayed. for more details see `bundle help show`."
|
data/lib/jbundler/lock_down.rb
CHANGED
data/lib/jbundler/vendor.rb
CHANGED
@@ -58,7 +58,7 @@ module JBundler
|
|
58
58
|
end
|
59
59
|
['jbundler.rb', 'jbundle.rb'].each do |filename|
|
60
60
|
File.write( File.join( @dir, filename ),
|
61
|
-
"ENV['JARS_LOCK'] = File.join( File.dirname( __FILE__ ), 'Jars.lock' )\nrequire 'jars/setup" )
|
61
|
+
"ENV['JARS_LOCK'] = File.join( File.dirname( __FILE__ ), 'Jars.lock' )\nrequire 'jars/setup'" )
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
data/spec/config_spec.rb
CHANGED
@@ -35,7 +35,7 @@ describe JBundler::Config do
|
|
35
35
|
c.jarfile.must_equal File.join( basedir, 'spec', 'Jarfile' )
|
36
36
|
c.gemfile.must_equal File.join( basedir, 'spec', 'Gemfile' )
|
37
37
|
c.skip.must_equal nil
|
38
|
-
c.settings.must_equal "
|
38
|
+
c.settings.must_equal File.expand_path("settings.xml")
|
39
39
|
c.offline.must_equal false
|
40
40
|
c.work_dir.must_equal File.join( basedir, 'spec','pkg' )
|
41
41
|
c.vendor_dir.must_equal File.join( basedir, 'spec', 'vendor', 'jars' )
|
@@ -138,7 +138,8 @@ describe JBundler::Config do
|
|
138
138
|
c.jarfile.must_equal File.join( pdir, 'JarFile' )
|
139
139
|
c.gemfile.must_equal File.join( pdir, 'GemFile' )
|
140
140
|
c.skip.must_equal false
|
141
|
-
|
141
|
+
# names are case insensitive
|
142
|
+
c.settings.downcase.must_equal File.join( pdir, 'Settings.xml' ).downcase
|
142
143
|
c.offline.must_equal true
|
143
144
|
c.work_dir.must_equal File.join( pdir, 'pkg/work' )
|
144
145
|
c.vendor_dir.must_equal File.join( pdir, 'vendor/localjars' )
|
File without changes
|
metadata
CHANGED
@@ -1,107 +1,115 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jbundler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christian Meier
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-05-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
+
name: maven-tools
|
14
15
|
requirement: !ruby/object:Gem::Requirement
|
15
16
|
requirements:
|
16
|
-
- - ~>
|
17
|
+
- - "~>"
|
17
18
|
- !ruby/object:Gem::Version
|
18
|
-
version: 1.
|
19
|
-
name: maven-tools
|
20
|
-
prerelease: false
|
19
|
+
version: '1.1'
|
21
20
|
type: :runtime
|
21
|
+
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.
|
26
|
+
version: '1.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
+
name: ruby-maven
|
28
29
|
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
|
-
- - ~>
|
31
|
+
- - "~>"
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: '3.3'
|
33
|
-
- -
|
34
|
+
- - ">="
|
34
35
|
- !ruby/object:Gem::Version
|
35
|
-
version: 3.3.
|
36
|
-
name: ruby-maven
|
37
|
-
prerelease: false
|
36
|
+
version: 3.3.8
|
38
37
|
type: :runtime
|
38
|
+
prerelease: false
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
|
-
- - ~>
|
41
|
+
- - "~>"
|
42
42
|
- !ruby/object:Gem::Version
|
43
43
|
version: '3.3'
|
44
|
-
- -
|
44
|
+
- - ">="
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: 3.3.
|
46
|
+
version: 3.3.8
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
|
+
name: bundler
|
48
49
|
requirement: !ruby/object:Gem::Requirement
|
49
50
|
requirements:
|
50
|
-
- -
|
51
|
+
- - ">"
|
51
52
|
- !ruby/object:Gem::Version
|
52
53
|
version: '1.5'
|
53
|
-
|
54
|
-
|
54
|
+
- - "<"
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 3.0.0
|
55
57
|
type: :runtime
|
58
|
+
prerelease: false
|
56
59
|
version_requirements: !ruby/object:Gem::Requirement
|
57
60
|
requirements:
|
58
|
-
- -
|
61
|
+
- - ">"
|
59
62
|
- !ruby/object:Gem::Version
|
60
63
|
version: '1.5'
|
64
|
+
- - "<"
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: 3.0.0
|
61
67
|
- !ruby/object:Gem::Dependency
|
68
|
+
name: jar-dependencies
|
62
69
|
requirement: !ruby/object:Gem::Requirement
|
63
70
|
requirements:
|
64
|
-
- - ~>
|
71
|
+
- - "~>"
|
65
72
|
- !ruby/object:Gem::Version
|
66
|
-
version: '0.
|
67
|
-
name: jar-dependencies
|
68
|
-
prerelease: false
|
73
|
+
version: '0.3'
|
69
74
|
type: :runtime
|
75
|
+
prerelease: false
|
70
76
|
version_requirements: !ruby/object:Gem::Requirement
|
71
77
|
requirements:
|
72
|
-
- - ~>
|
78
|
+
- - "~>"
|
73
79
|
- !ruby/object:Gem::Version
|
74
|
-
version: '0.
|
80
|
+
version: '0.3'
|
75
81
|
- !ruby/object:Gem::Dependency
|
82
|
+
name: rake
|
76
83
|
requirement: !ruby/object:Gem::Requirement
|
77
84
|
requirements:
|
78
|
-
- - ~>
|
85
|
+
- - "~>"
|
79
86
|
- !ruby/object:Gem::Version
|
80
87
|
version: '10.0'
|
81
|
-
name: rake
|
82
|
-
prerelease: false
|
83
88
|
type: :development
|
89
|
+
prerelease: false
|
84
90
|
version_requirements: !ruby/object:Gem::Requirement
|
85
91
|
requirements:
|
86
|
-
- - ~>
|
92
|
+
- - "~>"
|
87
93
|
- !ruby/object:Gem::Version
|
88
94
|
version: '10.0'
|
89
95
|
- !ruby/object:Gem::Dependency
|
96
|
+
name: minitest
|
90
97
|
requirement: !ruby/object:Gem::Requirement
|
91
98
|
requirements:
|
92
|
-
- - ~>
|
99
|
+
- - "~>"
|
93
100
|
- !ruby/object:Gem::Version
|
94
101
|
version: '5.3'
|
95
|
-
name: minitest
|
96
|
-
prerelease: false
|
97
102
|
type: :development
|
103
|
+
prerelease: false
|
98
104
|
version_requirements: !ruby/object:Gem::Requirement
|
99
105
|
requirements:
|
100
|
-
- - ~>
|
106
|
+
- - "~>"
|
101
107
|
- !ruby/object:Gem::Version
|
102
108
|
version: '5.3'
|
103
|
-
description:
|
104
|
-
|
109
|
+
description: 'managing jar dependencies with or without bundler. adding bundler like
|
110
|
+
handling of version ranges for jar dependencies.
|
111
|
+
|
112
|
+
'
|
105
113
|
email:
|
106
114
|
- m.kristian@web.de
|
107
115
|
executables:
|
@@ -135,6 +143,7 @@ files:
|
|
135
143
|
- spec/classpath_file_spec.rb
|
136
144
|
- spec/config_spec.rb
|
137
145
|
- spec/pom_spec.rb
|
146
|
+
- spec/project/Settings.xml
|
138
147
|
- spec/project/settings.xml
|
139
148
|
- spec/setup.rb
|
140
149
|
- spec/vendor_spec.rb
|
@@ -148,17 +157,16 @@ require_paths:
|
|
148
157
|
- lib
|
149
158
|
required_ruby_version: !ruby/object:Gem::Requirement
|
150
159
|
requirements:
|
151
|
-
- -
|
160
|
+
- - ">="
|
152
161
|
- !ruby/object:Gem::Version
|
153
162
|
version: '0'
|
154
163
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
164
|
requirements:
|
156
|
-
- -
|
165
|
+
- - ">="
|
157
166
|
- !ruby/object:Gem::Version
|
158
167
|
version: '0'
|
159
168
|
requirements: []
|
160
|
-
|
161
|
-
rubygems_version: 2.4.8
|
169
|
+
rubygems_version: 3.2.22
|
162
170
|
signing_key:
|
163
171
|
specification_version: 4
|
164
172
|
summary: managing jar dependencies
|