lock_jar 0.10.5 → 0.12.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.
- checksums.yaml +4 -4
- data/.gitignore +0 -40
- data/.travis.yml +3 -1
- data/CHANGELOG.md +22 -14
- data/Gemfile.lock +78 -0
- data/README.md +48 -42
- data/lib/lock_jar/domain/dsl.rb +57 -51
- data/lib/lock_jar/domain/lockfile.rb +21 -37
- data/lib/lock_jar/resolver.rb +23 -19
- data/lib/lock_jar/runtime.rb +97 -83
- data/lib/lock_jar/version.rb +1 -1
- data/spec/lock_jar_spec.rb +340 -311
- data/spec/spec_helper.rb +5 -1
- data/spec/support/shared_examples/lockfile.rb +47 -0
- metadata +23 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 890e8f58de1d05c870ec1254fd8922e1f3d300c7
|
4
|
+
data.tar.gz: 79eee178effcfbcf2da3cc50345e1fd23f31d93c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d64ba05c2d2c4ee3ef4bb99b8d10437e91c16050ac060f76a70a3a2ed78b4780c2eb36b41e5e777b7ce7eba6322df39d99f1918dcf7c87d53d8d86cdf342395
|
7
|
+
data.tar.gz: 59ae69cb059f46c198f7336a30b01b9535bdfb53b37739c36d2aa1da8e6f90941179480da427703c1ecaceb0ab8c9e4ccb5211665f2d78c47fabae1d9a2cf123
|
data/.gitignore
CHANGED
@@ -1,7 +1,4 @@
|
|
1
|
-
# Dont save the Gemfile since JRuby and CRuby have incompatiable deps
|
2
|
-
Gemfile.lock
|
3
1
|
Jarfile.lock
|
4
|
-
|
5
2
|
.*
|
6
3
|
|
7
4
|
tmp
|
@@ -19,41 +16,4 @@ doc
|
|
19
16
|
# bundler
|
20
17
|
.bundle
|
21
18
|
|
22
|
-
# jeweler generated
|
23
|
-
pkg
|
24
|
-
|
25
|
-
# Have editor/IDE/OS specific files you need to ignore? Consider using a global gitignore:
|
26
|
-
#
|
27
|
-
# * Create a file at ~/.gitignore
|
28
|
-
# * Include files you want ignored
|
29
|
-
# * Run: git config --global core.excludesfile ~/.gitignore
|
30
|
-
#
|
31
|
-
# After doing this, these files will be ignored in all your git projects,
|
32
|
-
# saving you from having to 'pollute' every project you touch with them
|
33
|
-
#
|
34
|
-
# Not sure what to needs to be ignored for particular editors/OSes? Here's some ideas to get you started. (Remember, remove the leading # of the line)
|
35
|
-
#
|
36
|
-
# For MacOS:
|
37
|
-
#
|
38
|
-
#.DS_Store
|
39
|
-
|
40
|
-
# For TextMate
|
41
|
-
#*.tmproj
|
42
|
-
#tmtags
|
43
|
-
|
44
|
-
# For emacs:
|
45
|
-
#*~
|
46
|
-
#\#*
|
47
|
-
#.\#*
|
48
|
-
|
49
|
-
# For vim:
|
50
|
-
#*.swp
|
51
|
-
|
52
|
-
# ides:
|
53
|
-
.redcar
|
54
|
-
*.iml
|
55
|
-
|
56
|
-
# For rubinius:
|
57
|
-
#*.rbc
|
58
|
-
|
59
19
|
autotest
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,26 +1,34 @@
|
|
1
1
|
## LockJar Changelog
|
2
2
|
|
3
|
-
### 0.
|
3
|
+
### 0.12.0 (Feburary 23, 2015)
|
4
|
+
|
5
|
+
* Add support for `without_default_maven_repo`
|
6
|
+
|
7
|
+
### 0.10.0 (June 27, 2014)
|
8
|
+
|
9
|
+
* Extract Bundler out to own Gem - https://github.com/mguymon/lock_jar_bundler
|
10
|
+
|
11
|
+
#### 0.10.5 (Feburary 13, 2015)
|
12
|
+
|
13
|
+
* Use Naether 0.14.0, with support for NAETHER_MIRROR env
|
14
|
+
|
15
|
+
#### 0.10.4 (Feburary 11, 2015)
|
4
16
|
|
5
17
|
* Fix bug with excludes in Jarfiles (<a href="https://github.com/mguymon/lock_jar/pull/25">Pull #20</a>) [<a href="https://github.com/pangloss">pangloss</a>]
|
6
18
|
|
7
|
-
|
19
|
+
#### 0.10.3 (Januaray 13, 2015)
|
8
20
|
|
9
21
|
* Control the logging of Naether from LockJar::Logging
|
10
22
|
|
11
|
-
|
23
|
+
#### 0.10.2 (November 20, 2014)
|
12
24
|
|
13
25
|
* Default to the correct file, based on desired type (<a href="https://github.com/mguymon/lock_jar/pull/22">Pull #20</a>) [<a href="https://github.com/pangloss">pangloss</a>]
|
14
26
|
|
15
|
-
|
27
|
+
#### 0.10.1 (November 19, 2014)
|
16
28
|
|
17
29
|
* Use local_repository from Jarfile.lock in install() if none has been passed in (<a href="https://github.com/mguymon/lock_jar/pull/20">Pull #20</a>) [<a href="https://github.com/stewi2">stewi2</a>]
|
18
30
|
* Add support for merging and locking multiple Jarfiles (<a href="https://github.com/mguymon/lock_jar/pull/21">Pull #21</a>) [<a href="https://github.com/pangloss">pangloss</a>]
|
19
31
|
|
20
|
-
### 0.10.0 (June 27, 2014)
|
21
|
-
|
22
|
-
* Extract Bundler out to own Gem - https://github.com/mguymon/lock_jar_bundler
|
23
|
-
|
24
32
|
### 0.9.0 (March 6, 2014)
|
25
33
|
|
26
34
|
* Update to Naether 0.13.1 to fight the chatty log (<a href="https://github.com/mguymon/lock_jar/issues/14">Issue #14</a>)
|
@@ -29,14 +37,14 @@
|
|
29
37
|
|
30
38
|
* Added `local` to DSL for adding local jars (<a href="https://github.com/mguymon/lock_jar/issues/6">Issue #6</a>)
|
31
39
|
|
32
|
-
### 0.7.
|
40
|
+
### 0.7.0
|
33
41
|
|
34
|
-
*
|
42
|
+
* Sort dependences for Jarfile.lock (<a href="https://github.com/mguymon/lock_jar/pull/3">Pull #3</a>) [<a href="https://github.com/chetan">chetan</a>]
|
35
43
|
|
36
|
-
|
44
|
+
#### 0.7.5 (August 23, 2013)
|
37
45
|
|
38
|
-
*
|
46
|
+
* Update Thor dep, improve specs (<a href="https://github.com/mguymon/lock_jar/pull/10">Pull #10</a>) [<a href="https://github.com/yokolet">yokolet</a>]
|
39
47
|
|
40
|
-
|
48
|
+
#### 0.7.4 (April 17, 2013)
|
41
49
|
|
42
|
-
*
|
50
|
+
* Fixed Buildr integration (<a href="https://github.com/mguymon/lock_jar/issues/6">Issue #6</a>) [<a href="https://github.com/tobsch">tobsch</a>]
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
lock_jar (0.12.0)
|
5
|
+
naether (~> 0.14.0)
|
6
|
+
thor (>= 0.18.1)
|
7
|
+
|
8
|
+
GEM
|
9
|
+
remote: https://rubygems.org/
|
10
|
+
specs:
|
11
|
+
celluloid (0.15.2)
|
12
|
+
timers (~> 1.1.0)
|
13
|
+
coderay (1.1.0)
|
14
|
+
diff-lcs (1.2.5)
|
15
|
+
ffi (1.9.3)
|
16
|
+
ffi (1.9.3-java)
|
17
|
+
formatador (0.2.5)
|
18
|
+
guard (2.6.1)
|
19
|
+
formatador (>= 0.2.4)
|
20
|
+
listen (~> 2.7)
|
21
|
+
lumberjack (~> 1.0)
|
22
|
+
pry (>= 0.9.12)
|
23
|
+
thor (>= 0.18.1)
|
24
|
+
guard-rspec (4.2.10)
|
25
|
+
guard (~> 2.1)
|
26
|
+
rspec (>= 2.14, < 4.0)
|
27
|
+
httpclient (2.6.0.1)
|
28
|
+
jruby-openssl (0.9.5-java)
|
29
|
+
listen (2.7.9)
|
30
|
+
celluloid (>= 0.15.2)
|
31
|
+
rb-fsevent (>= 0.9.3)
|
32
|
+
rb-inotify (>= 0.9)
|
33
|
+
lumberjack (1.0.7)
|
34
|
+
method_source (0.8.2)
|
35
|
+
naether (0.14.0)
|
36
|
+
httpclient
|
37
|
+
rjb (~> 1.4.0)
|
38
|
+
naether (0.14.0-java)
|
39
|
+
httpclient
|
40
|
+
pry (0.10.0)
|
41
|
+
coderay (~> 1.1.0)
|
42
|
+
method_source (~> 0.8.1)
|
43
|
+
slop (~> 3.4)
|
44
|
+
pry (0.10.0-java)
|
45
|
+
coderay (~> 1.1.0)
|
46
|
+
method_source (~> 0.8.1)
|
47
|
+
slop (~> 3.4)
|
48
|
+
spoon (~> 0.0)
|
49
|
+
rb-fsevent (0.9.4)
|
50
|
+
rb-inotify (0.9.5)
|
51
|
+
ffi (>= 0.5.0)
|
52
|
+
rjb (1.4.9)
|
53
|
+
rspec (2.14.1)
|
54
|
+
rspec-core (~> 2.14.0)
|
55
|
+
rspec-expectations (~> 2.14.0)
|
56
|
+
rspec-mocks (~> 2.14.0)
|
57
|
+
rspec-core (2.14.8)
|
58
|
+
rspec-expectations (2.14.5)
|
59
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
60
|
+
rspec-mocks (2.14.6)
|
61
|
+
slop (3.5.0)
|
62
|
+
spoon (0.0.4)
|
63
|
+
ffi
|
64
|
+
thor (0.19.1)
|
65
|
+
timers (1.1.0)
|
66
|
+
yard (0.8.7.4)
|
67
|
+
|
68
|
+
PLATFORMS
|
69
|
+
java
|
70
|
+
ruby
|
71
|
+
|
72
|
+
DEPENDENCIES
|
73
|
+
guard-rspec
|
74
|
+
jruby-openssl
|
75
|
+
lock_jar!
|
76
|
+
pry
|
77
|
+
rspec (~> 2.14.1)
|
78
|
+
yard
|
data/README.md
CHANGED
@@ -26,20 +26,21 @@ JRuby is natively supported. Ruby 1.9.3 and 2.1 uses [Rjb](http://rjb.rubyforge.
|
|
26
26
|
|
27
27
|
### Jarfile
|
28
28
|
|
29
|
-
A Jarfile is a simple file using a Ruby DSL for defining a project's dependencies using the following
|
29
|
+
A Jarfile is a simple file using a Ruby DSL for defining a project's dependencies using the following
|
30
30
|
methods:
|
31
31
|
|
32
|
-
* **local_repo( path )**: Set the local Maven repository, this were dependencies are downloaded to.
|
32
|
+
* **local_repo( path )**: Set the local Maven repository, this were dependencies are downloaded to.
|
33
33
|
* **remote_repo( url )**: Add additional url of remote Maven repository.
|
34
34
|
* **group( groups )**: Set the group for nested jar or pom. A single or Array of groups can be set.
|
35
35
|
* **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 group is _default_, can be specified by setting _opts = { :group => ['group_name'] }_
|
36
36
|
* **local( path )**: Add a local path to a Jar
|
37
37
|
* **pom( pom_path, opts = {} )**: Add a local Maven pom, default is to load dependencies for `runtime` and `compile` scopes. To select the scopes to be loaded from the pom, set the _opts = { :scopes => ['test'] }_
|
38
|
+
* **without_default_maven_repo**: Do not use the default maven repo.
|
38
39
|
|
39
40
|
#### Example Jarfile
|
40
41
|
|
41
42
|
repository 'http://repository.jboss.org/nexus/content/groups/public-jboss'
|
42
|
-
|
43
|
+
|
43
44
|
// Default group is default
|
44
45
|
jar "org.apache.mina:mina-core:2.0.4"
|
45
46
|
local 'spec/fixtures/naether-0.13.0.jar'
|
@@ -47,11 +48,11 @@ methods:
|
|
47
48
|
group 'runtime' do
|
48
49
|
jar 'org.apache.tomcat:servlet-api:jar:6.0.35'
|
49
50
|
end
|
50
|
-
|
51
|
+
|
51
52
|
group 'test' do
|
52
53
|
jar 'junit:junit:jar:4.10', :group => 'test'
|
53
54
|
end
|
54
|
-
|
55
|
+
|
55
56
|
### Resolving dependencies
|
56
57
|
|
57
58
|
**LockJar.lock( *args )**: Using a Jarfile, creates a lock file. Depending on the type of arg, a different configuration is set.
|
@@ -66,14 +67,20 @@ When the Jarfile is locked, the transitive dependencies are resolved and saved t
|
|
66
67
|
Example of locking a Jarfile to a Jarfile.lock
|
67
68
|
|
68
69
|
LockJar.lock
|
69
|
-
|
70
|
-
|
70
|
+
|
71
|
+
#### Default Remote Repository
|
72
|
+
|
73
|
+
LockJar uses Naether's default remote repository, http://repo1.maven.org/maven2/.
|
74
|
+
|
75
|
+
Jarfile.lock pior to _0.12.0_ did not write the default remote repository. As of version _0.12.0_, only repositories in the Jarfile.lock are used. This means older Jarfile.lock will need to be updated to include the default maven repo if they rely on it.
|
76
|
+
|
77
|
+
|
71
78
|
### Jarfile.lock
|
72
79
|
|
73
80
|
The _Jarfile.lock_ generated is a YAML file containing information on how to handle the classpath for grouped dependencies and their nested transitive dependencies.
|
74
81
|
|
75
82
|
#### The Jarfile.lock
|
76
|
-
|
83
|
+
|
77
84
|
---
|
78
85
|
version: 0.7.0
|
79
86
|
groups:
|
@@ -123,15 +130,15 @@ The _Jarfile.lock_ generated is a YAML file containing information on how to han
|
|
123
130
|
org.hamcrest:hamcrest-core:jar:1.1: {}
|
124
131
|
...
|
125
132
|
|
126
|
-
|
127
|
-
|
133
|
+
|
134
|
+
|
128
135
|
### Accessing Jars
|
129
136
|
**LockJar.install(*args)**: Download Jars in the Jarfile.lock
|
130
137
|
* _[String]_ will set the Jarfile.lock path, e.g. `'Better.lock'`. Default lock file is `'Jarfile.lock'`.
|
131
138
|
* _[Array<String>]_ will set the groups, e.g. `['compile','test']`. Defaults group is _default_.
|
132
139
|
* _[Hash]_ will set the options, e.g. `{ :local_repo => 'path' }`
|
133
140
|
* **:local_repo** _[String]_ sets the local repo path. Defaults to `ENV['M2_REPO']` or `'~/.m2/repository'`
|
134
|
-
|
141
|
+
|
135
142
|
**LockJar.list(*args)**: Lists all dependencies as notations for groups from the Jarfile.lock. Depending on the type of arg, a different configuration is set.
|
136
143
|
* _[String]_ will set the Jarfile.lock path, e.g. `'Better.lock'`. Default lock file is `'Jarfile.lock'`.
|
137
144
|
* _[Array<String>]_ will set the groups, e.g. `['default', 'runtime']`. Defaults group is _default_.
|
@@ -139,24 +146,24 @@ The _Jarfile.lock_ generated is a YAML file containing information on how to han
|
|
139
146
|
* **:local_repo** _[String]_ sets the local repo path. Defaults to `ENV['M2_REPO']` or `'~/.m2/repository'`
|
140
147
|
* **:local_paths** _[Boolean]_ converts the notations to paths of jars in the local repo
|
141
148
|
* **:resolve** _[Boolean]_ to true will make transitive dependences resolve before returning list of jars
|
142
|
-
|
149
|
+
|
143
150
|
**LockJar.load(*args)**: Loads all dependencies to the classpath for groups from the Jarfile.lock. Default group is _default_. Default lock file is _Jarfile.lock_.
|
144
151
|
* _[String]_ will set the Jarfile.lock, e.g. `'Better.lock'`
|
145
152
|
* _[Array<String>]_ will set the groups, e.g. `['default', 'runtime']`
|
146
153
|
* _[Hash]_ will set the options, e.g. `{ :local_repo => 'path' }`
|
147
154
|
* **:local_repo** _[String]_ sets the local repo path
|
148
|
-
* **:resolve** _[Boolean]_ to true will make transitive dependences resolve before loading to classpath
|
155
|
+
* **:resolve** _[Boolean]_ to true will make transitive dependences resolve before loading to classpath
|
149
156
|
|
150
157
|
Once a _Jarfile.lock_ is generated, you can list all resolved jars by
|
151
|
-
|
158
|
+
|
152
159
|
jars = LockJar.list
|
153
|
-
|
160
|
+
|
154
161
|
or directly load all Jars into the classpath
|
155
|
-
|
162
|
+
|
156
163
|
jars = LockJar.load
|
157
164
|
|
158
165
|
Do not forget, if you change your _Jarfile_, you have to re-generate the _Jarfile.lock_.
|
159
|
-
|
166
|
+
|
160
167
|
See also [loading Jars into a custom ClassLoader](https://github.com/mguymon/lock_jar/wiki/ClassLoader).
|
161
168
|
|
162
169
|
### Shortcuts
|
@@ -172,13 +179,13 @@ You can skip the _Jarfile_ and _Jarfile.lock_ to directly play with dependencies
|
|
172
179
|
end
|
173
180
|
|
174
181
|
#### List without a Jarfile.lock
|
175
|
-
|
182
|
+
|
176
183
|
LockJar.list do
|
177
184
|
jar 'org.eclipse.jetty:example-jetty-embedded:jar:8.1.2.v20120308'
|
178
185
|
end
|
179
186
|
|
180
187
|
#### Load without a Jarfile.lock
|
181
|
-
|
188
|
+
|
182
189
|
LockJar.load do
|
183
190
|
jar 'org.eclipse.jetty:example-jetty-embedded:jar:8.1.2.v20120308'
|
184
191
|
end
|
@@ -195,14 +202,14 @@ There is a simple command line helper. You can lock a _Jarfile_ with the followi
|
|
195
202
|
|
196
203
|
lockjar lock
|
197
204
|
|
198
|
-
List jars in a _Jarfile.lock_ with
|
199
|
-
|
205
|
+
List jars in a _Jarfile.lock_ with
|
206
|
+
|
200
207
|
lockjar list
|
201
|
-
|
208
|
+
|
202
209
|
Download all jars in a _Jarfile.lock_ with
|
203
210
|
|
204
211
|
lockjar install
|
205
|
-
|
212
|
+
|
206
213
|
_lockjar_ _--help_ will give you list of all commands and their options.
|
207
214
|
|
208
215
|
## Gem Integration
|
@@ -224,18 +231,18 @@ Rakefile with default to install Jars using LockJar:
|
|
224
231
|
|
225
232
|
task :prepare do
|
226
233
|
require 'lock_jar'
|
227
|
-
|
234
|
+
|
228
235
|
# get jarfile relative the gem dir
|
229
|
-
lockfile = File.expand_path( "../Jarfile.lock", __FILE__ )
|
230
|
-
|
236
|
+
lockfile = File.expand_path( "../Jarfile.lock", __FILE__ )
|
237
|
+
|
231
238
|
LockJar.install( lockfile )
|
232
239
|
end
|
233
|
-
|
240
|
+
|
234
241
|
#### Work around for Rakefile default
|
235
242
|
|
236
|
-
The downside of using the Gem extension Rakefile is it requires the default to
|
237
|
-
point at the task to download the jars (from the example Rakefile,
|
238
|
-
`task :default => :prepare`). To get around this, I used a Rakefile called
|
243
|
+
The downside of using the Gem extension Rakefile is it requires the default to
|
244
|
+
point at the task to download the jars (from the example Rakefile,
|
245
|
+
`task :default => :prepare`). To get around this, I used a Rakefile called
|
239
246
|
_PostInstallRakefile_ to handle the `task :prepare`. When packaging the gem, _PostInstallRakefile_ is
|
240
247
|
renamed to `Rakefile`.
|
241
248
|
|
@@ -245,19 +252,19 @@ Instead of rely in a Rakefile to install Jars when the Gem is installed, Jars ca
|
|
245
252
|
Ruby needs to be called before calling `LockJar.load`. Only Jars that are missing are downloaded.
|
246
253
|
|
247
254
|
#get jarfile relative the gem dir
|
248
|
-
lockfile = File.expand_path( "../Jarfile.lock", __FILE__ )
|
249
|
-
|
255
|
+
lockfile = File.expand_path( "../Jarfile.lock", __FILE__ )
|
256
|
+
|
250
257
|
# Download any missing Jars
|
251
258
|
LockJar.install( lockfile )
|
252
259
|
|
253
260
|
### Loading
|
254
261
|
|
255
|
-
With the Jars installed, loading the classpath for the Gem is simple.
|
262
|
+
With the Jars installed, loading the classpath for the Gem is simple.
|
256
263
|
As part of the load process for the Gem (an entry file that is required, etc) use the following:
|
257
264
|
|
258
265
|
#get jarfile relative the gem dir
|
259
|
-
lockfile = File.expand_path( "../Jarfile.lock", __FILE__ )
|
260
|
-
|
266
|
+
lockfile = File.expand_path( "../Jarfile.lock", __FILE__ )
|
267
|
+
|
261
268
|
# Loads the ClassPath with Jars from the lockfile
|
262
269
|
LockJar.load( lockfile )
|
263
270
|
|
@@ -270,7 +277,7 @@ LockJar integrates with [Buildr](http://buildr.apache.org/) using an [Addon](htt
|
|
270
277
|
A new Buildr task is added to generate the lockfile for all projects
|
271
278
|
|
272
279
|
buildr lock_jar:lock
|
273
|
-
|
280
|
+
|
274
281
|
and a task per project to generate the lockfile for a single project
|
275
282
|
|
276
283
|
buildr <app>:<project>:lock_jar:lock
|
@@ -288,7 +295,7 @@ The _default_ group dependencies are automatically added to the classpath for co
|
|
288
295
|
Sample buildfile with LockJar
|
289
296
|
|
290
297
|
require 'lock_jar/buildr'
|
291
|
-
|
298
|
+
|
292
299
|
# app definition, inherited into all projects
|
293
300
|
lock_jar do
|
294
301
|
|
@@ -317,10 +324,10 @@ Generated the following lock files using **lock_jar:lock**
|
|
317
324
|
|
318
325
|
* _project1.lock_ - contains _junit_ and _mina_ jars.
|
319
326
|
* _project2.lock_ - contains _junit_ and _pom.xml_ jars.
|
320
|
-
|
327
|
+
|
321
328
|
## Bundler Integration
|
322
329
|
|
323
|
-
Bundler integration is **experimental** right now. [LockJar patches Bundler](https://github.com/mguymon/lock_jar/blob/master/lib/lock_jar/bundler.rb)
|
330
|
+
Bundler integration is **experimental** right now. [LockJar patches Bundler](https://github.com/mguymon/lock_jar/blob/master/lib/lock_jar/bundler.rb)
|
324
331
|
to allow creation of a _Jarfile.lock_ when Bundler calls `install` and `update`. The dependencies from the _Jarfile.lock_ are automatically loaded when
|
325
332
|
Bundler calls `setup` and `require`. To enable this support, add this require to your _Gemfile_
|
326
333
|
|
@@ -331,7 +338,7 @@ Gems with a Jarfile will be merge to generate a _Jarfile.lock_. The Jarfile.lock
|
|
331
338
|
|
332
339
|
### Bundler to LockJar groups
|
333
340
|
|
334
|
-
LockJar will merge the dependencies from the `default` and `runtime` group of a Gem's _Jarfile_. These will be placed in the
|
341
|
+
LockJar will merge the dependencies from the `default` and `runtime` group of a Gem's _Jarfile_. These will be placed in the
|
335
342
|
lockfile under Gem's corresponding Bundler group. For example, the following Gemfile:
|
336
343
|
|
337
344
|
group :development do
|
@@ -355,7 +362,7 @@ Would produce the follow _Jarfile.lock_ excerpt:
|
|
355
362
|
- com.google.guava:guava:jar:r05
|
356
363
|
|
357
364
|
Since `solr_sail` is defined in the _Gemfile's_ `development` group, the corresponding _Jarfile.lock_ dependencies are also under the `development` group.
|
358
|
-
|
365
|
+
|
359
366
|
## License
|
360
367
|
|
361
368
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
@@ -372,4 +379,3 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
372
379
|
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
373
380
|
License for the specific language governing permissions and limitations under
|
374
381
|
the License.
|
375
|
-
|
data/lib/lock_jar/domain/dsl.rb
CHANGED
@@ -20,71 +20,73 @@ require 'lock_jar/domain/artifact'
|
|
20
20
|
module LockJar
|
21
21
|
module Domain
|
22
22
|
class Dsl
|
23
|
-
|
23
|
+
|
24
24
|
DEFAULT_GROUP = ['default']
|
25
|
-
|
25
|
+
|
26
26
|
attr_accessor :artifacts, :remote_repositories, :local_repository, :groups,
|
27
|
-
:maps, :excludes, :merged
|
28
|
-
|
27
|
+
:maps, :excludes, :merged, :clear_repositories
|
28
|
+
|
29
29
|
attr_reader :file_path
|
30
|
-
|
30
|
+
|
31
31
|
class << self
|
32
|
-
|
32
|
+
|
33
33
|
def create(jarfile = nil, &blk)
|
34
34
|
builder = new
|
35
35
|
evaluate(builder, jarfile, &blk)
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
def evaluate(builder, jarfile = nil, &blk)
|
39
39
|
if jarfile.nil? && blk.nil?
|
40
40
|
raise "jarfile or block must be set"
|
41
41
|
end
|
42
|
-
|
42
|
+
|
43
43
|
if jarfile
|
44
44
|
builder.instance_eval(DslHelper.read_file(jarfile.to_s), jarfile.to_s, 1)
|
45
|
-
end
|
46
|
-
|
45
|
+
end
|
46
|
+
|
47
47
|
if blk
|
48
48
|
builder.instance_eval(&blk)
|
49
|
-
end
|
50
|
-
|
49
|
+
end
|
50
|
+
|
51
51
|
builder
|
52
52
|
end
|
53
|
-
|
53
|
+
|
54
54
|
end
|
55
|
-
|
55
|
+
|
56
56
|
def initialize
|
57
|
-
|
57
|
+
|
58
58
|
@remote_repositories = []
|
59
59
|
@artifacts = { 'default' => [] }
|
60
|
-
|
60
|
+
|
61
61
|
@group_changed = false
|
62
|
-
|
62
|
+
|
63
63
|
@present_group = 'default'
|
64
|
-
|
64
|
+
|
65
65
|
@local_repository = nil
|
66
66
|
@maps = {}
|
67
|
-
|
67
|
+
|
68
68
|
@excludes = []
|
69
|
-
|
69
|
+
|
70
70
|
@merged = []
|
71
|
+
|
72
|
+
@clear_repositories = false
|
71
73
|
end
|
72
|
-
|
74
|
+
|
73
75
|
def exclude(*notations)
|
74
76
|
@excludes += notations
|
75
77
|
end
|
76
|
-
|
78
|
+
|
77
79
|
def jar(notation, *args)
|
78
80
|
opts = {}
|
79
81
|
if args.last.is_a? Hash
|
80
82
|
opts.merge!( args.last )
|
81
83
|
end
|
82
|
-
|
84
|
+
|
83
85
|
artifact = Jar.new( notation )
|
84
|
-
|
86
|
+
|
85
87
|
assign_groups( artifact, opts[:group] )
|
86
88
|
end
|
87
|
-
|
89
|
+
|
88
90
|
def local( *args )
|
89
91
|
unless args.empty?
|
90
92
|
if File.directory?( File.expand_path( args.first ) )
|
@@ -97,48 +99,48 @@ module LockJar
|
|
97
99
|
if args.last.is_a? Hash
|
98
100
|
opts.merge!( args.last )
|
99
101
|
end
|
100
|
-
|
102
|
+
|
101
103
|
artifact = Local.new( path )
|
102
|
-
|
104
|
+
|
103
105
|
assign_groups( artifact, opts[:group] )
|
104
106
|
end
|
105
107
|
end
|
106
108
|
end
|
107
|
-
|
109
|
+
|
108
110
|
def local_repo( path )
|
109
111
|
@local_repository = path
|
110
112
|
end
|
111
|
-
|
113
|
+
|
112
114
|
alias_method :name, :local_repository
|
113
|
-
|
115
|
+
|
114
116
|
# Map a dependency to another dependency or local directory.
|
115
117
|
def map( notation, *args )
|
116
118
|
@maps[notation] = args
|
117
119
|
end
|
118
|
-
|
119
|
-
#
|
120
|
+
|
121
|
+
#
|
120
122
|
def pom(path, *args)
|
121
123
|
unless path =~ /\.xml$/i
|
122
|
-
raise "#{path} is an invalid pom path"
|
124
|
+
raise "#{path} is an invalid pom path"
|
123
125
|
end
|
124
|
-
|
126
|
+
|
125
127
|
opts = { :scopes => ['runtime', 'compile'] }
|
126
|
-
|
128
|
+
|
127
129
|
if args.last.is_a? Hash
|
128
130
|
opts.merge! args.last
|
129
131
|
end
|
130
|
-
|
132
|
+
|
131
133
|
artifact = Pom.new( path, opts[:scopes] )
|
132
|
-
|
134
|
+
|
133
135
|
assign_groups( artifact, opts[:groups] )
|
134
136
|
end
|
135
|
-
|
137
|
+
|
136
138
|
def remote_repo( url, opts = {} )
|
137
139
|
@remote_repositories << url
|
138
140
|
end
|
139
141
|
alias_method :remote_repository, :remote_repo
|
140
142
|
alias_method :repository, :remote_repo
|
141
|
-
|
143
|
+
|
142
144
|
def group(*groups, &blk)
|
143
145
|
@group_changed = true
|
144
146
|
groups.each do |group|
|
@@ -147,32 +149,36 @@ module LockJar
|
|
147
149
|
end
|
148
150
|
@group_changed = false
|
149
151
|
@present_group = 'default'
|
150
|
-
end
|
151
|
-
|
152
|
+
end
|
153
|
+
|
152
154
|
# @deprecated Please use {#group} instead
|
153
155
|
def scope(*scopes, &blk)
|
154
156
|
warn "[DEPRECATION] `scope` is deprecated. Please use `group` instead."
|
155
157
|
group(*scopes,&blk)
|
156
158
|
end
|
157
|
-
|
158
|
-
|
159
|
+
|
160
|
+
def without_default_maven_repo
|
161
|
+
@clear_repositories = true
|
162
|
+
end
|
163
|
+
|
164
|
+
private
|
159
165
|
def assign_groups(artifact, groups=nil)
|
160
|
-
|
166
|
+
|
161
167
|
if groups
|
162
|
-
|
168
|
+
|
163
169
|
unless groups.is_a? Array
|
164
170
|
groups = [groups]
|
165
171
|
end
|
166
|
-
|
172
|
+
|
167
173
|
# include present group if within a group block
|
168
174
|
if @group_changed
|
169
175
|
groups << @present_group
|
170
176
|
end
|
171
|
-
|
177
|
+
|
172
178
|
else
|
173
179
|
groups = [@present_group]
|
174
180
|
end
|
175
|
-
|
181
|
+
|
176
182
|
if artifact
|
177
183
|
groups.uniq.each do |group|
|
178
184
|
group_key = group.to_s
|
@@ -180,9 +186,9 @@ module LockJar
|
|
180
186
|
@artifacts[group_key] << artifact
|
181
187
|
end
|
182
188
|
end
|
183
|
-
|
189
|
+
|
184
190
|
end
|
185
|
-
|
191
|
+
|
186
192
|
end
|
187
193
|
end
|
188
|
-
end
|
194
|
+
end
|