lock_jar 0.5.6 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -1
- data/README.md +78 -33
- data/VERSION +1 -1
- data/lib/lock_jar/maven.rb +31 -6
- data/lib/lock_jar/resolver.rb +6 -33
- data/lib/lock_jar/runtime.rb +3 -2
- data/lock_jar.gemspec +5 -5
- data/spec/Jarfile +1 -1
- data/spec/lock_jar/dsl_spec.rb +1 -1
- data/spec/lock_jar/maven_spec.rb +5 -0
- data/spec/lock_jar_spec.rb +69 -37
- metadata +5 -5
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -2,17 +2,17 @@
|
|
2
2
|
|
3
3
|
LockJar manages Java Jars for Ruby. Powered by [Naether](https://github.com/mguymon/naether) to create a frankenstein of Bundler and Maven. A Jarfile ([example](https://github.com/mguymon/lock_jar/blob/master/spec/Jarfile)) is used to generate a Jarfile.lock that contains all the resolved jar dependencies for scopes runtime, compile, and test. The Jarfile.lock can be used to populate the classpath.
|
4
4
|
|
5
|
-
LockJar can be used directly
|
5
|
+
LockJar can be used directly, from the [command line](https://github.com/mguymon/lock_jar/blob/master/README.md#command-line), [triggered from a Gem install](https://github.com/mguymon/lock_jar/blob/master/README.md#gem-integration), and [integrates with Buildr](https://github.com/mguymon/lock_jar/blob/master/README.md#buildr-integration).
|
6
6
|
|
7
7
|
https://github.com/mguymon/lock_jar
|
8
8
|
|
9
|
-
[RDoc](http://rubydoc.info/
|
9
|
+
[RDoc](http://rubydoc.info/gems/lock_jar/frames)
|
10
10
|
|
11
11
|
## Install
|
12
12
|
|
13
13
|
gem install lock_jar
|
14
14
|
|
15
|
-
## Usage
|
15
|
+
## Ruby Usage
|
16
16
|
|
17
17
|
### Jarfile
|
18
18
|
|
@@ -21,7 +21,6 @@ methods:
|
|
21
21
|
|
22
22
|
* **local( path )**: Set the local Maven repository, this were dependencies are downloaded to.
|
23
23
|
* **repository( url )**: Add additional urlr of remote Maven repository.
|
24
|
-
* **map( notation, paths )**: Map local compiled class paths to a notation. The map is applied when loading or listing jar. This is useful for local development that overrides an artifact. A single or Array of paths can be set.
|
25
24
|
* **exclude( excludes )**: Add a artifact:group that will be excluded from resolved dependencies. A single or Array of excludes can be set.
|
26
25
|
* **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'] }_
|
27
26
|
* **pom( pom_path, opts = {} )**: Add a local 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_scope'] }_
|
@@ -38,19 +37,17 @@ methods:
|
|
38
37
|
jar 'org.apache.tomcat:servlet-api:jar:6.0.35'
|
39
38
|
end
|
40
39
|
|
41
|
-
scope 'test'
|
42
|
-
jar 'junit:junit:jar:4.10'
|
43
|
-
end
|
40
|
+
jar 'junit:junit:jar:4.10', :scope => 'test'
|
44
41
|
|
45
42
|
|
46
43
|
### Resolving dependencies
|
47
44
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
45
|
+
**LockJar.lock( *args )**: Using a Jarfile, creates a lock file. Depending on the type of arg, a different configuration is set.
|
46
|
+
* _[String]_ will set the Jarfile path, e.g. `'/somewhere/Jarfile.different'`. Default jarfile is `'Jarfile'`
|
47
|
+
* _[Hash]_ will set the options, e.g. `{ :local_repo => 'path' }`
|
48
|
+
* **:download** _[Boolean]_ if true, will download jars to local repo. Defaults to true.
|
49
|
+
* **:local_repo** _[String]_ sets the local repo path. Defaults to `ENV['M2_REPO']` or `'~/.m2/repository'`
|
50
|
+
* **:lockfile** _[String]_ sets the Jarfile.lock path. Default lockfile is `'Jarfile.lock'`.
|
54
51
|
|
55
52
|
When the Jarfile is locked, the transitive dependencies are resolved and saved to the Jarfile.lock file.
|
56
53
|
|
@@ -98,21 +95,26 @@ The _Jarfile.lock_ generated is a YAML file containing the scoped dependencies,
|
|
98
95
|
|
99
96
|
|
100
97
|
### Accessing Jars
|
101
|
-
|
102
|
-
*
|
103
|
-
|
104
|
-
|
105
|
-
*
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
*
|
111
|
-
*
|
112
|
-
*
|
113
|
-
*
|
114
|
-
|
115
|
-
|
98
|
+
**LockJar.install(*args)**: Download Jars in the Jarfile.lock
|
99
|
+
* _[String]_ will set the Jarfile.lock path, e.g. `'Better.lock'`. Default lock file is `'Jarfile.lock'`.
|
100
|
+
* _[Array<String>]_ will set the scopes, e.g. `['compile','test']`. Defaults scopes are _compile_ and _runtime_.
|
101
|
+
* _[Hash]_ will set the options, e.g. `{ :local_repo => 'path' }`
|
102
|
+
* **:local_repo** _[String]_ sets the local repo path. Defaults to `ENV['M2_REPO']` or `'~/.m2/repository'`
|
103
|
+
|
104
|
+
**LockJar.list(*args)**: Lists all dependencies as notations for scopes from the Jarfile.lock. Depending on the type of arg, a different configuration is set.
|
105
|
+
* _[String]_ will set the Jarfile.lock path, e.g. `'Better.lock'`. Default lock file is `'Jarfile.lock'`.
|
106
|
+
* _[Array<String>]_ will set the scopes, e.g. `['compile','test']`. Defaults scopes are _compile_ and _runtime_.
|
107
|
+
* _[Hash]_ will set the options, e.g. `{ :local_repo => 'path' }`
|
108
|
+
* **:local_repo** _[String]_ sets the local repo path. Defaults to `ENV['M2_REPO']` or `'~/.m2/repository'`
|
109
|
+
* **:local_paths** _[Boolean]_ converts the notations to paths of jars in the local repo
|
110
|
+
* **:resolve** _[Boolean]_ to true will make transitive dependences resolve before returning list of jars
|
111
|
+
|
112
|
+
**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_.
|
113
|
+
* _[String]_ will set the Jarfile.lock, e.g. `'Better.lock'`
|
114
|
+
* _[Array<String>]_ will set the scopes, e.g. `['compile','test']`
|
115
|
+
* _[Hash]_ will set the options, e.g. `{ :local_repo => 'path' }`
|
116
|
+
* **:local_repo** _[String]_ sets the local repo path
|
117
|
+
* **:resolve** _[Boolean]_ to true will make transitive dependences resolve before loading to classpath
|
116
118
|
|
117
119
|
Once a _Jarfile.lock_ is generated, you can list all resolved jars by
|
118
120
|
|
@@ -170,10 +172,49 @@ Download all jars in a _Jarfile.lock_ with
|
|
170
172
|
|
171
173
|
_lockjar_ _--help_ will give you list of all commands and their options.
|
172
174
|
|
173
|
-
##
|
175
|
+
## Gem Integration
|
176
|
+
|
177
|
+
### Installing
|
178
|
+
|
179
|
+
LockJar can be triggered when a Gem is installed by using a [Gem extension](http://docs.rubygems.org/read/chapter/20#extensions)
|
180
|
+
of type _Rakefile_. The cavaet is the task to install the jars must be the default for the Rakefile.
|
181
|
+
|
182
|
+
A Gem spec with _Rakefile_ extension:
|
183
|
+
|
184
|
+
Gem::Specification.new do |s|
|
185
|
+
s.extensions = ["Rakefile"]
|
186
|
+
end
|
187
|
+
|
188
|
+
Rakefile with default to install Jars using LockJar:
|
189
|
+
|
190
|
+
task :default => :prepare
|
191
|
+
|
192
|
+
task :prepare do
|
193
|
+
require 'lock_jar'
|
194
|
+
|
195
|
+
# get jarfile relative the gem dir
|
196
|
+
lockfile = File.expand_path( "../Jarfile.lock", __FILE__ )
|
197
|
+
|
198
|
+
LockJar.install( :lockfile => lockfile )
|
199
|
+
end
|
200
|
+
|
201
|
+
#### Work around for Rakefile default
|
202
|
+
|
203
|
+
The downside of using the Gem extension Rakefile is it requires the default to
|
204
|
+
point at the task to download the jars (from the example Rakefile,
|
205
|
+
`task :default => :prepare`). To get around this, I used a Rakefile called
|
206
|
+
_PostInstallRakefile_ to handle the `task :prepare`. When packaging the gem, _PostInstallRakefile_ is
|
207
|
+
renamed to `Rakefile`.
|
208
|
+
|
209
|
+
### Loading
|
210
|
+
|
211
|
+
With the Jars already installed, loading the classpath for the Gem is simple. As part of the load process for the Gem add (entry file that is required, etc):
|
212
|
+
|
213
|
+
#get jarfile relative the gem dir
|
214
|
+
lockfile = File.expand_path( "../Jarfile.lock", __FILE__ )
|
215
|
+
|
216
|
+
LockJar.load( :lockfile => lockfile )
|
174
217
|
|
175
|
-
Has been deprecated to https://github.com/mguymon/lock_jar/tree/bundler_support
|
176
|
-
|
177
218
|
## Buildr Integration
|
178
219
|
|
179
220
|
LockJar integrates with [Buildr](http://buildr.apache.org/) using an [Addon](https://github.com/mguymon/lock_jar/blob/master/lib/lock_jar/buildr.rb). This allows the Jarfile to be defined directly into a _buildfile_. A global LockJar definition can be set and is inherited to all projects. Each project may have its own LockJar definition. A lock file is generated per project based on the project name.
|
@@ -226,9 +267,13 @@ Sample buildfile with LockJar
|
|
226
267
|
|
227
268
|
Generated the following lock files using **lock_jar:lock**
|
228
269
|
|
229
|
-
*
|
230
|
-
*
|
270
|
+
* _project1.lock_ - contains _junit_ and _mina_ jars.
|
271
|
+
* _project2.lock_ - contains _junit_ and _pom.xml_ jars.
|
231
272
|
|
273
|
+
## Bundler Integration
|
274
|
+
|
275
|
+
Direct Bundler integration has been deprecated to https://github.com/mguymon/lock_jar/tree/bundler_support.
|
276
|
+
Waiting for [Bundler plugin support](https://github.com/carlhuda/bundler/issues/1945)
|
232
277
|
|
233
278
|
## License
|
234
279
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.6.0
|
data/lib/lock_jar/maven.rb
CHANGED
@@ -14,6 +14,7 @@
|
|
14
14
|
# the License.
|
15
15
|
|
16
16
|
require 'lock_jar/runtime'
|
17
|
+
require 'naether/maven'
|
17
18
|
|
18
19
|
module LockJar
|
19
20
|
|
@@ -33,18 +34,42 @@ module LockJar
|
|
33
34
|
#
|
34
35
|
# @return [String] version of POM
|
35
36
|
#
|
36
|
-
def pom_version( pom_path
|
37
|
-
|
37
|
+
def pom_version( pom_path )
|
38
|
+
maven = Naether::Maven.create_from_pom( pom_path )
|
39
|
+
maven.version()
|
38
40
|
end
|
39
41
|
|
40
42
|
#
|
41
43
|
# Write a POM from list of notations
|
42
44
|
#
|
43
|
-
# @param [
|
45
|
+
# @param [String] pom notation
|
44
46
|
# @param [String] file_path path of new pom
|
45
|
-
# @param [Hash]
|
46
|
-
|
47
|
-
|
47
|
+
# @param [Hash] opts
|
48
|
+
# @option opts [Boolean] :include_resolved to add dependencies of resolve dependencies from Jarfile.lock. Default is true.
|
49
|
+
# @option opts [Array] :dependencies Array of of mixed dependencies:
|
50
|
+
# * [String] Artifact notation, such as groupId:artifactId:version, e.g. 'junit:junit:4.7'
|
51
|
+
# * [Hash] of a single artifaction notation => scope - { 'junit:junit:4.7' => 'test' }
|
52
|
+
#
|
53
|
+
def write_pom( notation, file_path, opts = {} )
|
54
|
+
opts = {:include_resolved => true}.merge( opts )
|
55
|
+
|
56
|
+
maven = Naether::Maven.create_from_notataion( notation )
|
57
|
+
|
58
|
+
if opts[:include_resolved]
|
59
|
+
# Passes in nil to the resolver to get the cache
|
60
|
+
maven.load_naether( Runtime.instance.resolver.naether )
|
61
|
+
end
|
62
|
+
|
63
|
+
if opts[:dependencies]
|
64
|
+
opts[:dependencies].each do |dep|
|
65
|
+
if dep.is_a? Array
|
66
|
+
maven.add_dependency(dep[0], dep[1])
|
67
|
+
else
|
68
|
+
maven.add_dependency(dep)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
maven.write_pom( file_path )
|
48
73
|
end
|
49
74
|
|
50
75
|
#
|
data/lib/lock_jar/resolver.rb
CHANGED
@@ -24,44 +24,17 @@ module LockJar
|
|
24
24
|
attr_reader :naether
|
25
25
|
|
26
26
|
def initialize( opts = {} )
|
27
|
+
|
27
28
|
@opts = opts
|
28
29
|
local_repo = opts[:local_repo] || Naether::Bootstrap.default_local_repo
|
29
30
|
|
30
31
|
# Bootstrap Naether
|
31
|
-
|
32
|
-
temp_jar_dir = File.join(local_repo, '.lock_jar', 'naether' )
|
33
|
-
deps = Naether::Bootstrap.check_local_repo_for_deps( local_repo )
|
34
|
-
if deps[:missing].size > 0
|
35
|
-
deps = Naether::Bootstrap.download_dependencies( temp_jar_dir, deps.merge( :local_repo => local_repo ) )
|
36
|
-
if deps[:downloaded].size > 0
|
37
|
-
|
38
|
-
unless File.directory?( temp_jar_dir )
|
39
|
-
FileUtils.mkdir_p jar_dir
|
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?
|
46
|
-
end
|
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
|
51
|
-
end
|
32
|
+
Naether::Bootstrap.bootstrap_local_repo( local_repo, opts )
|
52
33
|
|
53
|
-
jars = jars + deps[:exists].map{ |jar| jar.values[0] }
|
54
|
-
|
55
34
|
# Bootstrapping naether will create an instance from downloaded jars.
|
56
35
|
# If jars exist locally already, create manually
|
57
|
-
|
58
|
-
|
59
|
-
@naether = Naether.create_from_jars( jars )
|
60
|
-
end
|
61
|
-
|
62
|
-
@naether.local_repo_path = opts[:local_repo].to_s if opts[:local_repo]
|
63
|
-
|
64
|
-
|
36
|
+
@naether = Naether.new
|
37
|
+
@naether.local_repo_path = local_repo if local_repo
|
65
38
|
@naether.clear_remote_repositories if opts[:offline]
|
66
39
|
end
|
67
40
|
|
@@ -77,7 +50,7 @@ module LockJar
|
|
77
50
|
def resolve( dependencies, download_artifacts = true )
|
78
51
|
@naether.dependencies = dependencies
|
79
52
|
@naether.resolve_dependencies( download_artifacts )
|
80
|
-
@naether.
|
53
|
+
@naether.dependencies_notation
|
81
54
|
end
|
82
55
|
|
83
56
|
def download( dependencies )
|
@@ -112,7 +85,7 @@ module LockJar
|
|
112
85
|
Naether::Java.load_paths( dirs )
|
113
86
|
|
114
87
|
jars = @naether.to_local_paths( jars )
|
115
|
-
Naether::Java.
|
88
|
+
Naether::Java.load_paths( jars )
|
116
89
|
|
117
90
|
dirs + jars
|
118
91
|
end
|
data/lib/lock_jar/runtime.rb
CHANGED
@@ -31,8 +31,9 @@ module LockJar
|
|
31
31
|
opts[:local_repo] = File.expand_path(opts[:local_repo])
|
32
32
|
end
|
33
33
|
|
34
|
-
# XXX:
|
35
|
-
|
34
|
+
# XXX: Caches the resolver by the options. Passing in nil opts will replay
|
35
|
+
# from the cache. This need to change.
|
36
|
+
if @current_resolver.nil? || (!opts.nil? && opts != @current_resolver.opts)
|
36
37
|
@current_resolver = LockJar::Resolver.new( opts )
|
37
38
|
end
|
38
39
|
|
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.6.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-09-
|
12
|
+
s.date = "2012-09-19"
|
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@tobedevoured.com"
|
15
15
|
s.executables = ["lockjar"]
|
@@ -53,14 +53,14 @@ Gem::Specification.new do |s|
|
|
53
53
|
s.specification_version = 3
|
54
54
|
|
55
55
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
56
|
-
s.add_runtime_dependency(%q<naether>, ["~> 0.
|
56
|
+
s.add_runtime_dependency(%q<naether>, ["~> 0.9.0"])
|
57
57
|
s.add_runtime_dependency(%q<thor>, ["> 0.14.0"])
|
58
58
|
s.add_development_dependency(%q<rspec>, ["~> 2.9.0"])
|
59
59
|
s.add_development_dependency(%q<bundler>, ["~> 1.1.0"])
|
60
60
|
s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
|
61
61
|
s.add_development_dependency(%q<yard>, ["~> 0.8.0"])
|
62
62
|
else
|
63
|
-
s.add_dependency(%q<naether>, ["~> 0.
|
63
|
+
s.add_dependency(%q<naether>, ["~> 0.9.0"])
|
64
64
|
s.add_dependency(%q<thor>, ["> 0.14.0"])
|
65
65
|
s.add_dependency(%q<rspec>, ["~> 2.9.0"])
|
66
66
|
s.add_dependency(%q<bundler>, ["~> 1.1.0"])
|
@@ -68,7 +68,7 @@ Gem::Specification.new do |s|
|
|
68
68
|
s.add_dependency(%q<yard>, ["~> 0.8.0"])
|
69
69
|
end
|
70
70
|
else
|
71
|
-
s.add_dependency(%q<naether>, ["~> 0.
|
71
|
+
s.add_dependency(%q<naether>, ["~> 0.9.0"])
|
72
72
|
s.add_dependency(%q<thor>, ["> 0.14.0"])
|
73
73
|
s.add_dependency(%q<rspec>, ["~> 2.9.0"])
|
74
74
|
s.add_dependency(%q<bundler>, ["~> 1.1.0"])
|
data/spec/Jarfile
CHANGED
data/spec/lock_jar/dsl_spec.rb
CHANGED
@@ -5,7 +5,7 @@ describe LockJar::Dsl do
|
|
5
5
|
it "should load a Jarfile" do
|
6
6
|
jarfile = LockJar::Dsl.evaluate( "spec/Jarfile" )
|
7
7
|
|
8
|
-
jarfile.local_repository.should eql '~/.m2'
|
8
|
+
jarfile.local_repository.should eql '~/.m2/repository'
|
9
9
|
jarfile.notations.should eql( {"compile"=>["org.apache.mina:mina-core:2.0.4", "spec/pom.xml"], "runtime"=>["spec/pom.xml", "org.apache.tomcat:servlet-api:jar:6.0.35"], "test"=>["spec/pom.xml", "junit:junit:jar:4.10"]} )
|
10
10
|
jarfile.repositories.should eql( ['http://mirrors.ibiblio.org/pub/mirrors/maven2'] )
|
11
11
|
end
|
data/spec/lock_jar/maven_spec.rb
CHANGED
@@ -4,6 +4,11 @@ require 'lib/lock_jar/maven'
|
|
4
4
|
require 'naether'
|
5
5
|
|
6
6
|
describe LockJar::Maven do
|
7
|
+
before do
|
8
|
+
# Bootstrap Naether
|
9
|
+
Naether::Bootstrap.bootstrap_local_repo
|
10
|
+
end
|
11
|
+
|
7
12
|
context "Class" do
|
8
13
|
it "should get pom version" do
|
9
14
|
LockJar::Maven.pom_version( "spec/pom.xml" ).should eql( "3" )
|
data/spec/lock_jar_spec.rb
CHANGED
@@ -16,23 +16,26 @@ describe LockJar, "#lock" do
|
|
16
16
|
|
17
17
|
lockfile = LockJar.read('tmp/Jarfile.lock')
|
18
18
|
lockfile.should eql( {
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
"
|
23
|
-
|
24
|
-
"
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
19
|
+
"local_repository"=>"~/.m2/repository",
|
20
|
+
"scopes"=>{
|
21
|
+
"compile"=>{
|
22
|
+
"dependencies"=>["org.apache.mina:mina-core:2.0.4", "spec/pom.xml"],
|
23
|
+
"resolved_dependencies"=>["com.metapossum:metapossum-scanner:jar:1.0",
|
24
|
+
"org.apache.mina:mina-core:jar:2.0.4", "commons-beanutils:commons-beanutils:jar:1.8.3",
|
25
|
+
"ch.qos.logback:logback-classic:jar:0.9.24",
|
26
|
+
"commons-logging:commons-logging:jar:1.1.1", "junit:junit:jar:4.7",
|
27
|
+
"ch.qos.logback:logback-core:jar:0.9.24", "commons-lang:commons-lang:jar:2.6",
|
28
|
+
"com.slackworks:modelcitizen:jar:0.2.2", "org.slf4j:slf4j-api:jar:1.6.1",
|
29
|
+
"commons-io:commons-io:jar:1.4"]},
|
30
|
+
"runtime"=>{
|
31
|
+
"dependencies"=>["spec/pom.xml", "org.apache.tomcat:servlet-api:jar:6.0.35"],
|
32
|
+
"resolved_dependencies"=>["org.apache.tomcat:servlet-api:jar:6.0.35"]},
|
33
|
+
"test"=>{
|
34
|
+
"dependencies"=>["spec/pom.xml", "junit:junit:jar:4.10"],
|
35
|
+
"resolved_dependencies"=>["junit:junit:jar:4.10", "org.jboss.unit:jboss-unit:jar:1.2.4",
|
36
|
+
"org.hamcrest:hamcrest-core:jar:1.1"]}},
|
37
|
+
"repositories"=>["http://repo1.maven.org/maven2/", "http://mirrors.ibiblio.org/pub/mirrors/maven2", "http://repository.jboss.org/nexus/content/groups/public-jboss"]
|
38
|
+
})
|
36
39
|
end
|
37
40
|
|
38
41
|
it "should not replace dependencies with maps" do
|
@@ -61,12 +64,17 @@ describe LockJar, "#lock" do
|
|
61
64
|
File.exists?( 'tmp/Jarfile.lock' ).should be_true
|
62
65
|
lockfile = LockJar.read('tmp/Jarfile.lock')
|
63
66
|
lockfile.should eql( {
|
64
|
-
"repositories" => ["http://repo1.maven.org/maven2/", 'http://mirrors.ibiblio.org/pub/mirrors/maven2', "http://repository.jboss.org/nexus/content/groups/public-jboss"],
|
65
67
|
"excludes"=>["commons-logging", "logkit"],
|
66
68
|
"scopes"=>{
|
67
|
-
|
68
|
-
|
69
|
-
|
69
|
+
"compile"=>{
|
70
|
+
"dependencies"=>["opensymphony:oscache:jar:2.4.1"],
|
71
|
+
"resolved_dependencies"=>["log4j:log4j:jar:1.2.12", "javax.jms:jms:jar:1.1",
|
72
|
+
"opensymphony:oscache:jar:2.4.1", "javax.servlet:servlet-api:jar:2.3",
|
73
|
+
"avalon-framework:avalon-framework:jar:4.1.3"]}},
|
74
|
+
"repositories"=>["http://repo1.maven.org/maven2/",
|
75
|
+
"http://mirrors.ibiblio.org/pub/mirrors/maven2",
|
76
|
+
"http://repository.jboss.org/nexus/content/groups/public-jboss"]
|
77
|
+
})
|
70
78
|
|
71
79
|
end
|
72
80
|
|
@@ -80,11 +88,18 @@ describe LockJar, "#lock" do
|
|
80
88
|
|
81
89
|
lockfile = LockJar.read('tmp/NoRepoJarfile.lock')
|
82
90
|
lockfile.should eql( {
|
83
|
-
"repositories" => ["http://repo1.maven.org/maven2/"],
|
84
91
|
"scopes"=>{
|
85
92
|
"compile"=>{
|
86
|
-
|
87
|
-
|
93
|
+
"dependencies"=>["org.eclipse.jetty:jetty-servlet:8.1.3.v20120416"],
|
94
|
+
"resolved_dependencies"=>["org.eclipse.jetty:jetty-util:jar:8.1.3.v20120416",
|
95
|
+
"org.eclipse.jetty:jetty-io:jar:8.1.3.v20120416",
|
96
|
+
"org.eclipse.jetty.orbit:javax.servlet:jar:3.0.0.v201112011016",
|
97
|
+
"org.eclipse.jetty:jetty-security:jar:8.1.3.v20120416",
|
98
|
+
"org.eclipse.jetty:jetty-continuation:jar:8.1.3.v20120416",
|
99
|
+
"org.eclipse.jetty:jetty-servlet:jar:8.1.3.v20120416",
|
100
|
+
"org.eclipse.jetty:jetty-server:jar:8.1.3.v20120416",
|
101
|
+
"org.eclipse.jetty:jetty-http:jar:8.1.3.v20120416"]}},
|
102
|
+
"repositories"=>["http://repo1.maven.org/maven2/"]})
|
88
103
|
end
|
89
104
|
end
|
90
105
|
|
@@ -95,17 +110,17 @@ describe LockJar, "#install" do
|
|
95
110
|
|
96
111
|
jars = LockJar.install( 'tmp/Jarfile.lock', ['compile'], :local_repo => 'tmp/test-repo-install' )
|
97
112
|
jars.should eql(
|
98
|
-
[ File.expand_path( "tmp/test-repo-install/
|
99
|
-
File.expand_path( "tmp/test-repo-install/
|
113
|
+
[ File.expand_path( "tmp/test-repo-install/com/metapossum/metapossum-scanner/1.0/metapossum-scanner-1.0.jar"),
|
114
|
+
File.expand_path( "tmp/test-repo-install/commons-beanutils/commons-beanutils/1.8.3/commons-beanutils-1.8.3.jar"),
|
115
|
+
File.expand_path( "tmp/test-repo-install/org/apache/mina/mina-core/2.0.4/mina-core-2.0.4.jar"),
|
116
|
+
File.expand_path( "tmp/test-repo-install/ch/qos/logback/logback-classic/0.9.24/logback-classic-0.9.24.jar" ),
|
117
|
+
File.expand_path( "tmp/test-repo-install/junit/junit/4.7/junit-4.7.jar"),
|
118
|
+
File.expand_path( "tmp/test-repo-install/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar"),
|
119
|
+
File.expand_path( "tmp/test-repo-install/ch/qos/logback/logback-core/0.9.24/logback-core-0.9.24.jar"),
|
100
120
|
File.expand_path( "tmp/test-repo-install/com/slackworks/modelcitizen/0.2.2/modelcitizen-0.2.2.jar"),
|
101
121
|
File.expand_path( "tmp/test-repo-install/commons-lang/commons-lang/2.6/commons-lang-2.6.jar"),
|
102
|
-
File.expand_path( "tmp/test-repo-install/
|
103
|
-
File.expand_path( "tmp/test-repo-install/commons-
|
104
|
-
File.expand_path( "tmp/test-repo-install/ch/qos/logback/logback-classic/0.9.24/logback-classic-0.9.24.jar" ),
|
105
|
-
File.expand_path( "tmp/test-repo-install/ch/qos/logback/logback-core/0.9.24/logback-core-0.9.24.jar" ),
|
106
|
-
File.expand_path( "tmp/test-repo-install/com/metapossum/metapossum-scanner/1.0/metapossum-scanner-1.0.jar" ),
|
107
|
-
File.expand_path( "tmp/test-repo-install/commons-io/commons-io/1.4/commons-io-1.4.jar" ),
|
108
|
-
File.expand_path( "tmp/test-repo-install/junit/junit/4.7/junit-4.7.jar" ) ] )
|
122
|
+
File.expand_path( "tmp/test-repo-install/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.jar"),
|
123
|
+
File.expand_path( "tmp/test-repo-install/commons-io/commons-io/1.4/commons-io-1.4.jar")] )
|
109
124
|
end
|
110
125
|
|
111
126
|
end
|
@@ -116,8 +131,13 @@ describe LockJar, "#list" do
|
|
116
131
|
LockJar.lock( "spec/Jarfile", :local_repo => 'tmp/test-repo', :lockfile => 'tmp/Jarfile.lock' )
|
117
132
|
|
118
133
|
jars = LockJar.list( 'tmp/Jarfile.lock', ['compile', 'runtime', 'bad scope'], :local_repo => 'tmp/test-repo' )
|
119
|
-
jars.should eql(
|
120
|
-
|
134
|
+
jars.should eql([
|
135
|
+
"com.metapossum:metapossum-scanner:jar:1.0", "org.apache.mina:mina-core:jar:2.0.4",
|
136
|
+
"commons-beanutils:commons-beanutils:jar:1.8.3", "ch.qos.logback:logback-classic:jar:0.9.24",
|
137
|
+
"commons-logging:commons-logging:jar:1.1.1", "junit:junit:jar:4.7",
|
138
|
+
"ch.qos.logback:logback-core:jar:0.9.24", "commons-lang:commons-lang:jar:2.6",
|
139
|
+
"com.slackworks:modelcitizen:jar:0.2.2", "org.slf4j:slf4j-api:jar:1.6.1",
|
140
|
+
"commons-io:commons-io:jar:1.4", "org.apache.tomcat:servlet-api:jar:6.0.35" ])
|
121
141
|
end
|
122
142
|
|
123
143
|
it "should replace dependencies with maps" do
|
@@ -155,8 +175,20 @@ describe LockJar, "#load" do
|
|
155
175
|
LockJar.lock( "spec/Jarfile", :local_repo => 'tmp/test-repo', :lockfile => 'tmp/Jarfile.lock' )
|
156
176
|
|
157
177
|
jars = LockJar.load( 'tmp/Jarfile.lock', ['compile', 'runtime'], :local_repo => 'tmp/test-repo' )
|
158
|
-
jars.should eql( [
|
159
|
-
|
178
|
+
jars.should eql( [
|
179
|
+
File.expand_path("tmp/test-repo/com/metapossum/metapossum-scanner/1.0/metapossum-scanner-1.0.jar"),
|
180
|
+
File.expand_path("tmp/test-repo/org/apache/mina/mina-core/2.0.4/mina-core-2.0.4.jar"),
|
181
|
+
File.expand_path("tmp/test-repo/commons-beanutils/commons-beanutils/1.8.3/commons-beanutils-1.8.3.jar"),
|
182
|
+
File.expand_path("tmp/test-repo/ch/qos/logback/logback-classic/0.9.24/logback-classic-0.9.24.jar"),
|
183
|
+
File.expand_path("tmp/test-repo/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar"),
|
184
|
+
File.expand_path("tmp/test-repo/junit/junit/4.7/junit-4.7.jar"),
|
185
|
+
File.expand_path("tmp/test-repo/ch/qos/logback/logback-core/0.9.24/logback-core-0.9.24.jar"),
|
186
|
+
File.expand_path("tmp/test-repo/commons-lang/commons-lang/2.6/commons-lang-2.6.jar"),
|
187
|
+
File.expand_path("tmp/test-repo/com/slackworks/modelcitizen/0.2.2/modelcitizen-0.2.2.jar"),
|
188
|
+
File.expand_path("tmp/test-repo/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.jar"),
|
189
|
+
File.expand_path("tmp/test-repo/commons-io/commons-io/1.4/commons-io-1.4.jar"),
|
190
|
+
File.expand_path("tmp/test-repo/org/apache/tomcat/servlet-api/6.0.35/servlet-api-6.0.35.jar") ]
|
191
|
+
)
|
160
192
|
if Naether.platform == 'java'
|
161
193
|
lambda { include_class 'org.apache.mina.core.IoUtil' }.should_not raise_error
|
162
194
|
else
|
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.6.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-09-
|
12
|
+
date: 2012-09-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: naether
|
@@ -18,7 +18,7 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.
|
21
|
+
version: 0.9.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.
|
29
|
+
version: 0.9.0
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: thor
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -158,7 +158,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
158
158
|
version: '0'
|
159
159
|
segments:
|
160
160
|
- 0
|
161
|
-
hash:
|
161
|
+
hash: 3691790945900068517
|
162
162
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
163
163
|
none: false
|
164
164
|
requirements:
|