lock_jar 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +2 -2
- data/README.rdoc +30 -7
- data/VERSION +1 -1
- data/lib/lock_jar/buildr.rb +25 -1
- data/lib/lock_jar/resolver.rb +25 -13
- data/lib/lock_jar/runtime.rb +20 -6
- data/lib/lock_jar.rb +18 -2
- data/lock_jar.gemspec +9 -9
- data/spec/lock_jar/bundler_spec.rb +3 -1
- data/spec/lock_jar/dsl_spec.rb +1 -1
- data/spec/lock_jar/maven_spec.rb +1 -1
- data/spec/lock_jar/resolver_spec.rb +1 -1
- data/spec/lock_jar/runtime_spec.rb +1 -1
- data/spec/lock_jar_spec.rb +123 -110
- data/spec/spec_helper.rb +2 -2
- metadata +15 -35
data/Gemfile
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
|
3
|
-
gem "naether", "~> 0.
|
3
|
+
gem "naether", "~> 0.8.0"
|
4
4
|
|
5
5
|
# Add dependencies to develop your gem here.
|
6
6
|
# Include everything needed to run rake, tests, features, etc.
|
7
7
|
group :development do
|
8
8
|
gem "rspec", "~> 2.9.0"
|
9
|
-
gem "bundler", "
|
9
|
+
gem "bundler", "~> 1.1.0"
|
10
10
|
gem "jeweler", "~> 1.6.4"
|
11
11
|
end
|
data/README.rdoc
CHANGED
@@ -20,11 +20,13 @@ gem install lock_jar
|
|
20
20
|
A Jarfile is a simple file using a Ruby DSL for defining a project's dependencies using the following
|
21
21
|
methods:
|
22
22
|
|
23
|
-
* local: Set the local Maven repository
|
24
|
-
* repository: Add url of additional remote Maven repository.
|
25
|
-
*
|
26
|
-
*
|
27
|
-
*
|
23
|
+
* local( path ): Set the local Maven repository
|
24
|
+
* repository( url ): Add url of additional remote Maven repository.
|
25
|
+
* map( notation, paths ): Map local paths to a notation.
|
26
|
+
* exclude( excludes ): Add a artifact:group that will be excluded from resolved dependencies. A single or Array of excludes can be set.
|
27
|
+
* jar( notations, opts = {} ): Add Jar dependency in artifact notation, artifact:group:version as the bare minimum. A single or Array of notations can be passed. Default scope is *compile*, can be specified by setting opts = { :scope => <new_scope> }
|
28
|
+
* pom( pom_path, opts = {} ): Add local path to a Maven pom, default is to load dependencies for all scopes. To select the scopes to be loaded from the pom, set the opts = { :scopes => <new_scopes> }
|
29
|
+
* scope( scopes ): Set the scope for nested jar or pom. A single or Array of scopes can be set.
|
28
30
|
|
29
31
|
Example Jarfile
|
30
32
|
|
@@ -44,7 +46,9 @@ Example Jarfile
|
|
44
46
|
|
45
47
|
==== Resolving dependencies
|
46
48
|
|
47
|
-
|
49
|
+
* LockJar.lock( jarfile = 'Jarfile', opts = {} ): Using a Jarfile, creates a lock file. Default jarfile lock is *Jarfile.lock*, can be changed by setting opts = { :lockfile => 'NewLockFile' }. The local repo defined in the Jarfile can be override by setting opts = { :local_repo => 'path/to/local/repo' }
|
50
|
+
|
51
|
+
When the Jarfile is locked, the transitive dependencies are resolved and saved to the Jarfile.lock file.
|
48
52
|
|
49
53
|
Example of locking a Jarfile to a Jarfile.lock
|
50
54
|
|
@@ -92,6 +96,20 @@ The Jarfile.lock
|
|
92
96
|
|
93
97
|
==== Accessing Jars
|
94
98
|
|
99
|
+
* LockJar.list(*args): Lists all dependencies as notations for scopes from the Jarfile.lock. Defaults scopes are *compile* and *runtime*. Default lock file is *Jarfile.lock*.
|
100
|
+
* args of a String will set the Jarfile, e.g. 'Jarfile.different'
|
101
|
+
* args of an Array will set the scopes, e.g. ['compile','test']
|
102
|
+
* args of a Hash will set the options, e.g. { :local_repo => 'path' }
|
103
|
+
* :local_repo sets the local repo path
|
104
|
+
* :local_paths converts the notations to paths to jars in the local repo path
|
105
|
+
|
106
|
+
* LockJar.load(*args): Loads all dependencies to the classpath for scopes from the Jarfile.lock. Defaults scopes are *compile* and *runtime*. Default lock file is *Jarfile.lock*.
|
107
|
+
* args of a String will set the Jarfile, e.g. 'Jarfile.different'
|
108
|
+
* args of an Array will set the scopes, e.g. ['compile','test']
|
109
|
+
* args of a Hash will set the options, e.g. { :local_repo => 'path' }
|
110
|
+
* :local_repo sets the local repo path
|
111
|
+
* :resolve to true will make transitive dependences resolve before loading to classpath
|
112
|
+
|
95
113
|
Once a Jarfile.lock is generated, you can list all resolved jars by
|
96
114
|
|
97
115
|
jars = LockJar.list
|
@@ -173,6 +191,12 @@ and a task per project to generate the lockfile for a single project
|
|
173
191
|
|
174
192
|
buildr <app>:<project>:lock_jar:lock
|
175
193
|
|
194
|
+
In a project, you can access an Array of notations using the *lock_jars* method, accepts same parameters as {LockJar.list}[https://github.com/mguymon/lock_jar#accessing-jars]
|
195
|
+
|
196
|
+
lock_jars()
|
197
|
+
|
198
|
+
|
199
|
+
|
176
200
|
The compile scoped dependencies are automatically added to the classpath for compiling. The test scoped dependencies are
|
177
201
|
automatically added to the classpath for tests. Do not forget, if you change the lock_jar
|
178
202
|
definitions, you have to rerun the *lock_jar:lock* task.
|
@@ -186,7 +210,6 @@ Sample buildfile with LockJar
|
|
186
210
|
|
187
211
|
# app definition, inherited into all projects
|
188
212
|
lock_jar do
|
189
|
-
repository 'http://repository.jboss.org/nexus/content/groups/public-jboss'
|
190
213
|
|
191
214
|
scope 'test' do
|
192
215
|
jar 'junit:junit:jar:4.10'
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
data/lib/lock_jar/buildr.rb
CHANGED
@@ -18,13 +18,15 @@ require 'lock_jar/dsl'
|
|
18
18
|
|
19
19
|
module Buildr
|
20
20
|
|
21
|
+
@@global_lockjar_dsl = nil
|
22
|
+
|
21
23
|
class << self
|
22
24
|
def project_to_lockfile( project )
|
23
25
|
"#{project.name.gsub(/:/,'-')}.lock"
|
24
26
|
end
|
25
27
|
|
26
28
|
def global_lockjar_dsl
|
27
|
-
@@global_lockjar_dsl
|
29
|
+
@@global_lockjar_dsl
|
28
30
|
end
|
29
31
|
end
|
30
32
|
|
@@ -37,6 +39,10 @@ module Buildr
|
|
37
39
|
task("lock") do
|
38
40
|
projects.each do |project|
|
39
41
|
if project.lockjar_dsl
|
42
|
+
# add buildr repos
|
43
|
+
repositories.remote.each do |repo|
|
44
|
+
project.lockjar_dsl.repository repo
|
45
|
+
end
|
40
46
|
::LockJar.lock( project.lockjar_dsl, :lockfile => Buildr.project_to_lockfile(project) )
|
41
47
|
end
|
42
48
|
end
|
@@ -81,11 +87,18 @@ module Buildr
|
|
81
87
|
task :compile => 'lock_jar:compile'
|
82
88
|
task 'test:compile' => 'lock_jar:test:compile'
|
83
89
|
|
90
|
+
task 'eclipse' => 'lock_jar:eclipse'
|
91
|
+
|
84
92
|
namespace "lock_jar" do
|
85
93
|
desc "Lock dependencies to JarFile"
|
86
94
|
task("lock") do
|
87
95
|
dsl = project.lockjar_dsl
|
88
96
|
if dsl
|
97
|
+
# add buildr repos
|
98
|
+
repositories.remote do |repo|
|
99
|
+
puts repo
|
100
|
+
dsl.repository repo
|
101
|
+
end
|
89
102
|
::LockJar.lock( dsl, :lockfile => "#{project.name}.lock" )
|
90
103
|
else
|
91
104
|
# XXX: output that there were not dependencies to lock
|
@@ -110,6 +123,17 @@ module Buildr
|
|
110
123
|
project.test.compile.with( jars )
|
111
124
|
project.test.with( jars )
|
112
125
|
end
|
126
|
+
|
127
|
+
task("eclipse") do
|
128
|
+
if project.lockjar_dsl && !File.exists?( Buildr.project_to_lockfile(project) )
|
129
|
+
raise "#{Buildr.project_to_lockfile(project)} does not exist, run #{project.name}:lockjar:lock first"
|
130
|
+
end
|
131
|
+
jars = ::LockJar.list( Buildr.project_to_lockfile(project), ['compile', 'runtime'] )
|
132
|
+
project.compile.with( jars )
|
133
|
+
|
134
|
+
jars = ::LockJar.list( Buildr.project_to_lockfile(project), ['compile', 'test', 'runtime'] )
|
135
|
+
project.test.compile.with( jars )
|
136
|
+
end
|
113
137
|
end
|
114
138
|
end
|
115
139
|
end
|
data/lib/lock_jar/resolver.rb
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
|
16
16
|
require 'rubygems'
|
17
17
|
require 'naether'
|
18
|
-
require '
|
18
|
+
require 'fileutils'
|
19
19
|
|
20
20
|
module LockJar
|
21
21
|
class Resolver
|
@@ -25,27 +25,39 @@ module LockJar
|
|
25
25
|
|
26
26
|
def initialize( opts = {} )
|
27
27
|
@opts = opts
|
28
|
-
local_repo = opts[:local_repo]
|
28
|
+
local_repo = opts[:local_repo] || Naether::Bootstrap.default_local_repo
|
29
29
|
|
30
30
|
# Bootstrap Naether
|
31
31
|
jars = []
|
32
|
+
temp_jar_dir = File.join(local_repo, '.lock_jar', 'naether' )
|
32
33
|
deps = Naether::Bootstrap.check_local_repo_for_deps( local_repo )
|
33
34
|
if deps[:missing].size > 0
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
else
|
40
|
-
# XXX: download failed?
|
35
|
+
deps = Naether::Bootstrap.download_dependencies( temp_jar_dir, deps.merge( :local_repo => local_repo ) )
|
36
|
+
if deps[:downloaded].size > 0
|
37
|
+
|
38
|
+
unless Dir.exists?( temp_jar_dir )
|
39
|
+
FileUtils.mkdir_p jar_dir
|
41
40
|
end
|
41
|
+
|
42
|
+
@naether = Naether::Bootstrap.install_dependencies_to_local_repo( temp_jar_dir, :local_repo => local_repo )
|
43
|
+
jars = jars + deps[:downloaded].map{ |jar| jar.values[0] }
|
44
|
+
else
|
45
|
+
# XXX: download failed?
|
42
46
|
end
|
43
|
-
|
44
|
-
|
47
|
+
|
48
|
+
# Remove bootstrap jars, they have been installed to the local repo
|
49
|
+
elsif File.exists?( temp_jar_dir )
|
50
|
+
FileUtils.rm_rf temp_jar_dir
|
45
51
|
end
|
46
52
|
|
47
|
-
jars
|
48
|
-
|
53
|
+
jars = jars + deps[:exists].map{ |jar| jar.values[0] }
|
54
|
+
|
55
|
+
# Bootstrapping naether will create an instance from downloaded jars.
|
56
|
+
# If jars exist locally already, create manually
|
57
|
+
if @naether.nil?
|
58
|
+
jars << Naether::JAR_PATH
|
59
|
+
@naether = Naether.create_from_jars( jars )
|
60
|
+
end
|
49
61
|
|
50
62
|
@naether.local_repo_path = opts[:local_repo] if opts[:local_repo]
|
51
63
|
|
data/lib/lock_jar/runtime.rb
CHANGED
@@ -35,16 +35,28 @@ module LockJar
|
|
35
35
|
@current_resolver
|
36
36
|
end
|
37
37
|
|
38
|
-
def lock( jarfile, opts = {} )
|
38
|
+
def lock( jarfile, opts = {}, &blk )
|
39
39
|
|
40
40
|
lock_jar_file = nil
|
41
41
|
|
42
|
-
if jarfile
|
43
|
-
|
44
|
-
|
45
|
-
|
42
|
+
if jarfile
|
43
|
+
if jarfile.is_a? LockJar::Dsl
|
44
|
+
lock_jar_file = jarfile
|
45
|
+
else
|
46
|
+
lock_jar_file = LockJar::Dsl.evaluate( jarfile )
|
47
|
+
end
|
46
48
|
end
|
47
49
|
|
50
|
+
unless blk.nil?
|
51
|
+
dsl = LockJar::Dsl.evaluate(&blk)
|
52
|
+
if lock_jar_file.nil?
|
53
|
+
lock_jar_file = dsl
|
54
|
+
else
|
55
|
+
lock_jar_file.merge( dsl )
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
|
48
60
|
# If not set in opts, and is set in dsl
|
49
61
|
if opts[:local_repo].nil? && lock_jar_file.local_repository
|
50
62
|
opts[:local_repo] = lock_jar_file.local_repository
|
@@ -119,6 +131,8 @@ module LockJar
|
|
119
131
|
File.open( opts[:lockfile] || "Jarfile.lock", "w") do |f|
|
120
132
|
f.write( lock_data.to_yaml )
|
121
133
|
end
|
134
|
+
|
135
|
+
lock_data
|
122
136
|
end
|
123
137
|
|
124
138
|
def list( jarfile_lock, scopes = ['compile', 'runtime'], opts = {}, &blk )
|
@@ -181,7 +195,7 @@ module LockJar
|
|
181
195
|
end
|
182
196
|
end
|
183
197
|
|
184
|
-
dependencies = list( jarfile_lock, scopes, &blk )
|
198
|
+
dependencies = list( jarfile_lock, scopes, opts, &blk )
|
185
199
|
|
186
200
|
if opts[:resolve]
|
187
201
|
dependencies = resolver(opts).resolve( dependencies )
|
data/lib/lock_jar.rb
CHANGED
@@ -28,8 +28,24 @@ module LockJar
|
|
28
28
|
# Lock a Jarfile and generate a Jarfile.lock
|
29
29
|
#
|
30
30
|
# Accepts path to the jarfile and hash of options to configure LockJar
|
31
|
-
def self.lock(
|
32
|
-
|
31
|
+
def self.lock( *args, &blk )
|
32
|
+
jarfile = nil
|
33
|
+
opts = {}
|
34
|
+
|
35
|
+
args.each do |arg|
|
36
|
+
if arg.is_a?(Hash)
|
37
|
+
opts.merge!( arg )
|
38
|
+
elsif arg.is_a?( String ) || arg.is_a?( LockJar::Dsl )
|
39
|
+
jarfile = arg
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
# default to Jarfile
|
44
|
+
if blk.nil? && jarfile.nil?
|
45
|
+
jarfile = 'Jarfile'
|
46
|
+
end
|
47
|
+
|
48
|
+
Runtime.instance.lock( jarfile, opts, &blk )
|
33
49
|
end
|
34
50
|
|
35
51
|
# List jars for an array of scope in a lockfile
|
data/lock_jar.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "lock_jar"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.3.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Michael Guymon"]
|
12
|
-
s.date = "2012-05-
|
12
|
+
s.date = "2012-05-14"
|
13
13
|
s.description = "Manage Jar files for Ruby. In the spirit of Bundler, a Jarfile\n is used to generate a Jarfile.lock that contains all the resolved jar dependencies for scopes runtime, compile, and test.\n The Jarfile.lock can be used to populate the classpath"
|
14
14
|
s.email = "michael.guymon@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -45,27 +45,27 @@ Gem::Specification.new do |s|
|
|
45
45
|
s.homepage = "http://github.com/mguymon/lock_jar"
|
46
46
|
s.licenses = ["Apache"]
|
47
47
|
s.require_paths = ["lib"]
|
48
|
-
s.rubygems_version = "1.8.
|
48
|
+
s.rubygems_version = "1.8.15"
|
49
49
|
s.summary = "Manage Jar files for Ruby"
|
50
50
|
|
51
51
|
if s.respond_to? :specification_version then
|
52
52
|
s.specification_version = 3
|
53
53
|
|
54
54
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
55
|
-
s.add_runtime_dependency(%q<naether>, ["~> 0.
|
55
|
+
s.add_runtime_dependency(%q<naether>, ["~> 0.8.0"])
|
56
56
|
s.add_development_dependency(%q<rspec>, ["~> 2.9.0"])
|
57
|
-
s.add_development_dependency(%q<bundler>, ["
|
57
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.1.0"])
|
58
58
|
s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
|
59
59
|
else
|
60
|
-
s.add_dependency(%q<naether>, ["~> 0.
|
60
|
+
s.add_dependency(%q<naether>, ["~> 0.8.0"])
|
61
61
|
s.add_dependency(%q<rspec>, ["~> 2.9.0"])
|
62
|
-
s.add_dependency(%q<bundler>, ["
|
62
|
+
s.add_dependency(%q<bundler>, ["~> 1.1.0"])
|
63
63
|
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
64
64
|
end
|
65
65
|
else
|
66
|
-
s.add_dependency(%q<naether>, ["~> 0.
|
66
|
+
s.add_dependency(%q<naether>, ["~> 0.8.0"])
|
67
67
|
s.add_dependency(%q<rspec>, ["~> 2.9.0"])
|
68
|
-
s.add_dependency(%q<bundler>, ["
|
68
|
+
s.add_dependency(%q<bundler>, ["~> 1.1.0"])
|
69
69
|
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
70
70
|
end
|
71
71
|
end
|
@@ -71,6 +71,8 @@ describe Bundler do
|
|
71
71
|
end
|
72
72
|
|
73
73
|
it "should load Jarfile.lock with Bundle.setup" do
|
74
|
+
LockJar.list( :resolve => true, :local_repo => tmp('test-repo') ) # ensure jars are already downloaded
|
75
|
+
|
74
76
|
ruby <<-RUBY
|
75
77
|
require 'rubygems'
|
76
78
|
require 'bundler'
|
@@ -83,7 +85,7 @@ describe Bundler do
|
|
83
85
|
|
84
86
|
puts Naether::Java.create('com.slackworks.modelcitizen.ModelFactory').getClass().toString()
|
85
87
|
RUBY
|
86
|
-
#
|
88
|
+
#err.should eq("") # 1.9.3 has a IConv error that outputs to std err
|
87
89
|
out.should match("class com.slackworks.modelcitizen.ModelFactory")
|
88
90
|
end
|
89
91
|
|
data/spec/lock_jar/dsl_spec.rb
CHANGED
data/spec/lock_jar/maven_spec.rb
CHANGED
data/spec/lock_jar_spec.rb
CHANGED
@@ -3,121 +3,134 @@ require 'rubygems'
|
|
3
3
|
require 'lib/lock_jar'
|
4
4
|
require 'naether'
|
5
5
|
|
6
|
-
describe LockJar do
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
map 'junit:junit:4.10', 'tmp'
|
20
|
-
jar 'junit:junit:4.10'
|
21
|
-
end
|
22
|
-
|
23
|
-
LockJar.lock( dsl, :local_repo => 'tmp/test-repo', :lockfile => 'tmp/Jarfile.lock' )
|
24
|
-
lockfile = LockJar.read('tmp/Jarfile.lock')
|
25
|
-
lockfile.should eql( {
|
26
|
-
"maps"=>{"junit:junit:4.10"=>["tmp"]},
|
27
|
-
"scopes"=>{
|
28
|
-
"compile"=>{
|
29
|
-
"dependencies"=>["junit:junit:4.10"], "resolved_dependencies"=>["junit:junit:jar:4.10", "org.hamcrest:hamcrest-core:jar:1.1"]}}} )
|
30
|
-
end
|
31
|
-
|
32
|
-
it "should exclude excludes from dependencies" do
|
33
|
-
dsl = LockJar::Dsl.evaluate do
|
34
|
-
exclude 'commons-logging', 'logkit'
|
35
|
-
jar 'opensymphony:oscache:jar:2.4.1'
|
36
|
-
end
|
37
|
-
|
38
|
-
LockJar.lock( dsl, :local_repo => 'tmp/test-repo', :lockfile => 'tmp/Jarfile.lock' )
|
39
|
-
lockfile = LockJar.read('tmp/Jarfile.lock')
|
40
|
-
lockfile.should eql( {
|
41
|
-
"excludes"=>["commons-logging", "logkit"],
|
42
|
-
"scopes"=>{
|
43
|
-
"compile"=>{
|
44
|
-
"dependencies"=>["opensymphony:oscache:jar:2.4.1"],
|
45
|
-
"resolved_dependencies"=>["opensymphony:oscache:jar:2.4.1", "log4j:log4j:jar:1.2.12", "avalon-framework:avalon-framework:jar:4.1.3", "javax.jms:jms:jar:1.1", "javax.servlet:servlet-api:jar:2.3"]}}} )
|
46
|
-
|
47
|
-
end
|
6
|
+
describe LockJar, "#lock" do
|
7
|
+
it "should create a lock file" do
|
8
|
+
File.delete( 'tmp/Jarfile.lock' ) if File.exists?( 'tmp/Jarfile.lock' )
|
9
|
+
Dir.mkdir( 'tmp' ) unless File.exists?( 'tmp' )
|
10
|
+
|
11
|
+
LockJar.lock( "spec/Jarfile", :local_repo => 'tmp/test-repo', :lockfile => 'tmp/Jarfile.lock' )
|
12
|
+
File.exists?( 'tmp/Jarfile.lock' ).should be_true
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should not replace dependencies with maps" do
|
16
|
+
dsl = LockJar::Dsl.evaluate do
|
17
|
+
map 'junit:junit:4.10', 'tmp'
|
18
|
+
jar 'junit:junit:4.10'
|
48
19
|
end
|
20
|
+
|
21
|
+
LockJar.lock( dsl, :local_repo => 'tmp/test-repo', :lockfile => 'tmp/Jarfile.lock' )
|
22
|
+
lockfile = LockJar.read('tmp/Jarfile.lock')
|
23
|
+
lockfile.should eql( {
|
24
|
+
"maps"=>{"junit:junit:4.10"=>["tmp"]},
|
25
|
+
"scopes"=>{
|
26
|
+
"compile"=>{
|
27
|
+
"dependencies"=>["junit:junit:4.10"], "resolved_dependencies"=>["junit:junit:jar:4.10", "org.hamcrest:hamcrest-core:jar:1.1"]}}} )
|
28
|
+
end
|
49
29
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
jars = LockJar.list( 'tmp/Jarfile.lock', ['compile', 'runtime', 'bad scope'], :local_repo => 'tmp/test-repo' )
|
55
|
-
jars.should eql( ["org.apache.mina:mina-core:jar:2.0.4", "org.slf4j:slf4j-api:jar:1.6.1", "com.slackworks:modelcitizen:jar:0.2.2", "commons-lang:commons-lang:jar:2.6", "commons-beanutils:commons-beanutils:jar:1.8.3", "commons-logging:commons-logging:jar:1.1.1", "ch.qos.logback:logback-classic:jar:0.9.24", "ch.qos.logback:logback-core:jar:0.9.24", "com.metapossum:metapossum-scanner:jar:1.0", "commons-io:commons-io:jar:1.4", "junit:junit:jar:4.7", "org.apache.tomcat:servlet-api:jar:6.0.35"] )
|
56
|
-
end
|
57
|
-
|
58
|
-
it "should replace dependencies with maps" do
|
59
|
-
dsl = LockJar::Dsl.evaluate do
|
60
|
-
map 'junit:junit', 'tmp'
|
61
|
-
jar 'junit:junit:4.10'
|
62
|
-
end
|
63
|
-
|
64
|
-
LockJar.lock( dsl, :local_repo => 'tmp/test-repo', :lockfile => 'tmp/ListJarfile.lock' )
|
65
|
-
paths = LockJar.list( 'tmp/ListJarfile.lock', :local_repo => 'tmp/test-repo' )
|
66
|
-
paths.should eql( [ "tmp", "org.hamcrest:hamcrest-core:jar:1.1"] )
|
67
|
-
end
|
68
|
-
|
69
|
-
it "should replace dependencies with maps and get local paths" do
|
70
|
-
dsl = LockJar::Dsl.evaluate do
|
71
|
-
map 'junit:junit', 'tmp'
|
72
|
-
jar 'junit:junit:4.10'
|
73
|
-
end
|
74
|
-
|
75
|
-
LockJar.lock( dsl, :local_repo => 'tmp/test-repo', :lockfile => 'tmp/ListJarfile.lock' )
|
76
|
-
paths = LockJar.list( 'tmp/ListJarfile.lock', :local_repo => 'tmp/test-repo' )
|
77
|
-
paths.should eql( [ "tmp", "org.hamcrest:hamcrest-core:jar:1.1"] )
|
78
|
-
end
|
30
|
+
it "should exclude excludes from dependencies" do
|
31
|
+
dsl = LockJar::Dsl.evaluate do
|
32
|
+
exclude 'commons-logging', 'logkit'
|
33
|
+
jar 'opensymphony:oscache:jar:2.4.1'
|
79
34
|
end
|
80
35
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
36
|
+
LockJar.lock( dsl, :local_repo => 'tmp/test-repo', :lockfile => 'tmp/Jarfile.lock' )
|
37
|
+
File.exists?( 'tmp/Jarfile.lock' ).should be_true
|
38
|
+
lockfile = LockJar.read('tmp/Jarfile.lock')
|
39
|
+
lockfile.should eql( {
|
40
|
+
"excludes"=>["commons-logging", "logkit"],
|
41
|
+
"scopes"=>{
|
42
|
+
"compile"=>{
|
43
|
+
"dependencies"=>["opensymphony:oscache:jar:2.4.1"],
|
44
|
+
"resolved_dependencies"=>["opensymphony:oscache:jar:2.4.1", "log4j:log4j:jar:1.2.12", "avalon-framework:avalon-framework:jar:4.1.3", "javax.jms:jms:jar:1.1", "javax.servlet:servlet-api:jar:2.3"]}}} )
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
it "should lock using a block" do
|
50
|
+
LockJar.lock( :local_repo => 'tmp/test-repo', :lockfile => 'tmp/NoRepoJarfile.lock' ) do
|
51
|
+
jar "org.eclipse.jetty:jetty-servlet:8.1.3.v20120416"
|
52
|
+
end
|
53
|
+
|
54
|
+
File.exists?( 'tmp/NoRepoJarfile.lock' ).should be_true
|
55
|
+
|
56
|
+
lockfile = LockJar.read('tmp/NoRepoJarfile.lock')
|
57
|
+
lockfile.should eql( {
|
58
|
+
"scopes"=>{
|
59
|
+
"compile"=>{
|
60
|
+
"dependencies"=>["org.eclipse.jetty:jetty-servlet:8.1.3.v20120416"],
|
61
|
+
"resolved_dependencies"=>["org.eclipse.jetty:jetty-servlet:jar:8.1.3.v20120416", "org.eclipse.jetty:jetty-security:jar:8.1.3.v20120416", "org.eclipse.jetty:jetty-server:jar:8.1.3.v20120416", "org.eclipse.jetty.orbit:javax.servlet:jar:3.0.0.v201112011016", "org.eclipse.jetty:jetty-continuation:jar:8.1.3.v20120416", "org.eclipse.jetty:jetty-http:jar:8.1.3.v20120416", "org.eclipse.jetty:jetty-io:jar:8.1.3.v20120416", "org.eclipse.jetty:jetty-util:jar:8.1.3.v20120416"]}}} )
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe LockJar, "#list" do
|
66
|
+
it "should list jars" do
|
67
|
+
LockJar.lock( "spec/Jarfile", :local_repo => 'tmp/test-repo', :lockfile => 'tmp/Jarfile.lock' )
|
94
68
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
69
|
+
jars = LockJar.list( 'tmp/Jarfile.lock', ['compile', 'runtime', 'bad scope'], :local_repo => 'tmp/test-repo' )
|
70
|
+
jars.should eql( ["org.apache.mina:mina-core:jar:2.0.4", "org.slf4j:slf4j-api:jar:1.6.1", "com.slackworks:modelcitizen:jar:0.2.2", "commons-lang:commons-lang:jar:2.6", "commons-beanutils:commons-beanutils:jar:1.8.3", "commons-logging:commons-logging:jar:1.1.1", "ch.qos.logback:logback-classic:jar:0.9.24", "ch.qos.logback:logback-core:jar:0.9.24", "com.metapossum:metapossum-scanner:jar:1.0", "commons-io:commons-io:jar:1.4", "junit:junit:jar:4.7", "org.apache.tomcat:servlet-api:jar:6.0.35"] )
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should replace dependencies with maps" do
|
74
|
+
dsl = LockJar::Dsl.evaluate do
|
75
|
+
map 'junit:junit', 'tmp'
|
76
|
+
jar 'junit:junit:4.10'
|
77
|
+
end
|
78
|
+
|
79
|
+
LockJar.lock( dsl, :local_repo => 'tmp/test-repo', :lockfile => 'tmp/ListJarfile.lock' )
|
80
|
+
paths = LockJar.list( 'tmp/ListJarfile.lock', :local_repo => 'tmp/test-repo' )
|
81
|
+
paths.should eql( [ "tmp", "org.hamcrest:hamcrest-core:jar:1.1"] )
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should replace dependencies with maps and get local paths" do
|
85
|
+
dsl = LockJar::Dsl.evaluate do
|
86
|
+
map 'junit:junit', 'tmp'
|
87
|
+
jar 'junit:junit:4.10'
|
88
|
+
end
|
89
|
+
|
90
|
+
LockJar.lock( dsl, :local_repo => 'tmp/test-repo', :lockfile => 'tmp/ListJarfile.lock' )
|
91
|
+
paths = LockJar.list( 'tmp/ListJarfile.lock', :local_repo => 'tmp/test-repo' )
|
92
|
+
paths.should eql( [ "tmp", "org.hamcrest:hamcrest-core:jar:1.1"] )
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
describe LockJar, "#load" do
|
97
|
+
it "by Jarfile.lock" do
|
98
|
+
if Naether.platform == 'java'
|
99
|
+
lambda { include_class 'org.apache.mina.core.IoUtil' }.should raise_error
|
100
|
+
else
|
101
|
+
lambda { Rjb::import('org.apache.mina.core.IoUtil') }.should raise_error
|
102
|
+
end
|
103
|
+
|
104
|
+
LockJar.lock( "spec/Jarfile", :local_repo => 'tmp/test-repo', :lockfile => 'tmp/Jarfile.lock' )
|
114
105
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
106
|
+
jars = LockJar.load( 'tmp/Jarfile.lock', ['compile', 'runtime'], :local_repo => 'tmp/test-repo' )
|
107
|
+
|
108
|
+
jars.should eql( [File.expand_path("tmp/test-repo/org/apache/mina/mina-core/2.0.4/mina-core-2.0.4.jar"), File.expand_path("tmp/test-repo/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.jar"), File.expand_path("tmp/test-repo/com/slackworks/modelcitizen/0.2.2/modelcitizen-0.2.2.jar"), File.expand_path("tmp/test-repo/commons-lang/commons-lang/2.6/commons-lang-2.6.jar"), File.expand_path("tmp/test-repo/commons-beanutils/commons-beanutils/1.8.3/commons-beanutils-1.8.3.jar"), File.expand_path("tmp/test-repo/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar"), File.expand_path("tmp/test-repo/ch/qos/logback/logback-classic/0.9.24/logback-classic-0.9.24.jar"), File.expand_path("tmp/test-repo/ch/qos/logback/logback-core/0.9.24/logback-core-0.9.24.jar"), File.expand_path("tmp/test-repo/com/metapossum/metapossum-scanner/1.0/metapossum-scanner-1.0.jar"), File.expand_path("tmp/test-repo/commons-io/commons-io/1.4/commons-io-1.4.jar"), File.expand_path("tmp/test-repo/junit/junit/4.7/junit-4.7.jar"), File.expand_path("tmp/test-repo/org/apache/tomcat/servlet-api/6.0.35/servlet-api-6.0.35.jar")] )
|
109
|
+
|
110
|
+
if Naether.platform == 'java'
|
111
|
+
lambda { include_class 'org.apache.mina.core.IoUtil' }.should_not raise_error
|
112
|
+
else
|
113
|
+
lambda { Rjb::import('org.apache.mina.core.IoUtil') }.should_not raise_error
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
it "by block with resolve option" do
|
118
|
+
if Naether.platform == 'java'
|
119
|
+
lambda { include_class 'org.modeshape.common.math.Duration' }.should raise_error
|
120
|
+
else
|
121
|
+
lambda { Rjb::import('org.modeshape.common.math.Duration') }.should raise_error
|
122
|
+
end
|
123
|
+
|
124
|
+
jars = LockJar.load( :resolve => true ) do
|
125
|
+
jar 'org.modeshape:modeshape-common:2.3.0.Final'
|
126
|
+
end
|
127
|
+
|
128
|
+
jars.should eql( ["/home/zinger/.m2/repository/org/modeshape/modeshape-common/2.3.0.Final/modeshape-common-2.3.0.Final.jar", "/home/zinger/.m2/repository/org/slf4j/slf4j-api/1.5.11/slf4j-api-1.5.11.jar", "/home/zinger/.m2/repository/net/jcip/jcip-annotations/1.0/jcip-annotations-1.0.jar"] )
|
129
|
+
|
130
|
+
if Naether.platform == 'java'
|
131
|
+
lambda { include_class 'org.modeshape.common.math.Duration' }.should_not raise_error
|
132
|
+
else
|
133
|
+
lambda { Rjb::import('org.modeshape.common.math.Duration') }.should_not raise_error
|
121
134
|
end
|
122
135
|
end
|
123
|
-
end
|
136
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
$:.unshift File.expand_path('.')
|
2
|
-
$:.unshift File.expand_path('..', __FILE__)
|
3
|
-
$:.unshift File.expand_path('../lib', __FILE__)
|
2
|
+
$:.unshift File.expand_path(File.join('..', File.dirname(__FILE__)))
|
3
|
+
$:.unshift File.expand_path(File.join('../lib', File.dirname(__FILE__)))
|
4
4
|
|
5
5
|
require 'rubygems'
|
6
6
|
require 'rspec'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lock_jar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,27 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-05-
|
12
|
+
date: 2012-05-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: naether
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirement: &6015220 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.
|
21
|
+
version: 0.8.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: 0.7.0
|
24
|
+
version_requirements: *6015220
|
30
25
|
- !ruby/object:Gem::Dependency
|
31
26
|
name: rspec
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
27
|
+
requirement: &6011880 !ruby/object:Gem::Requirement
|
33
28
|
none: false
|
34
29
|
requirements:
|
35
30
|
- - ~>
|
@@ -37,31 +32,21 @@ dependencies:
|
|
37
32
|
version: 2.9.0
|
38
33
|
type: :development
|
39
34
|
prerelease: false
|
40
|
-
version_requirements:
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: 2.9.0
|
35
|
+
version_requirements: *6011880
|
46
36
|
- !ruby/object:Gem::Dependency
|
47
37
|
name: bundler
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
38
|
+
requirement: &6132000 !ruby/object:Gem::Requirement
|
49
39
|
none: false
|
50
40
|
requirements:
|
51
|
-
- -
|
41
|
+
- - ~>
|
52
42
|
- !ruby/object:Gem::Version
|
53
|
-
version: 1.
|
43
|
+
version: 1.1.0
|
54
44
|
type: :development
|
55
45
|
prerelease: false
|
56
|
-
version_requirements:
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ! '>'
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 1.0.0
|
46
|
+
version_requirements: *6132000
|
62
47
|
- !ruby/object:Gem::Dependency
|
63
48
|
name: jeweler
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
+
requirement: &6129360 !ruby/object:Gem::Requirement
|
65
50
|
none: false
|
66
51
|
requirements:
|
67
52
|
- - ~>
|
@@ -69,12 +54,7 @@ dependencies:
|
|
69
54
|
version: 1.6.4
|
70
55
|
type: :development
|
71
56
|
prerelease: false
|
72
|
-
version_requirements:
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ~>
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: 1.6.4
|
57
|
+
version_requirements: *6129360
|
78
58
|
description: ! "Manage Jar files for Ruby. In the spirit of Bundler, a Jarfile\n is
|
79
59
|
used to generate a Jarfile.lock that contains all the resolved jar dependencies
|
80
60
|
for scopes runtime, compile, and test.\n The Jarfile.lock can be used to populate
|
@@ -125,7 +105,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
125
105
|
version: '0'
|
126
106
|
segments:
|
127
107
|
- 0
|
128
|
-
hash:
|
108
|
+
hash: 122660553079972418
|
129
109
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
130
110
|
none: false
|
131
111
|
requirements:
|
@@ -134,7 +114,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
134
114
|
version: '0'
|
135
115
|
requirements: []
|
136
116
|
rubyforge_project:
|
137
|
-
rubygems_version: 1.8.
|
117
|
+
rubygems_version: 1.8.15
|
138
118
|
signing_key:
|
139
119
|
specification_version: 3
|
140
120
|
summary: Manage Jar files for Ruby
|