jar-dependencies 0.3.5 → 0.3.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/jar_dependencies.rb +20 -55
- data/lib/jars/installer.rb +8 -6
- data/lib/jars/maven_factory.rb +1 -1
- data/lib/jars/maven_settings.rb +143 -0
- data/lib/jars/settings.xml +20 -0
- data/lib/jars/version.rb +1 -1
- metadata +16 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5fcca0d2cb7ec38d8207414244e5d5410132dc74
|
4
|
+
data.tar.gz: 2d5406449bced170d8ff87c7440c127312138a03
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e85cdacb44107f0e58860c04d74ddda3c680cf9b382ccd5f12b41711627bf60affa60aebb16a095950244abf635531531687ef036c60a3b19c5e39a0757df942
|
7
|
+
data.tar.gz: 27f21cdfeae6d0732ff704a6db91af6c8cb34158f56467606443a2b9a92d04dcc72bbdbe56a58d6a04a2e31940c85e6fe97100b1071e772f0afecd48ff688e64
|
data/lib/jar_dependencies.rb
CHANGED
@@ -18,6 +18,7 @@
|
|
18
18
|
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
19
19
|
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
20
20
|
#
|
21
|
+
require 'jars/maven_settings'
|
21
22
|
module Jars
|
22
23
|
unless defined? Jars::SKIP_LOCK
|
23
24
|
MAVEN_SETTINGS = 'JARS_MAVEN_SETTINGS'.freeze
|
@@ -151,60 +152,24 @@ module Jars
|
|
151
152
|
|
152
153
|
def reset
|
153
154
|
instance_variables.each { |var| instance_variable_set(var, nil) }
|
155
|
+
Jars::MavenSettings.reset
|
154
156
|
( @@jars ||= {} ).clear
|
155
157
|
end
|
156
158
|
|
157
159
|
def maven_local_settings
|
158
|
-
|
159
|
-
@_jars_maven_local_settings_ = nil
|
160
|
-
end
|
161
|
-
if @_jars_maven_local_settings_.nil?
|
162
|
-
if settings = absolute( 'settings.xml' )
|
163
|
-
if File.exists?(settings)
|
164
|
-
@_jars_maven_local_settings_ = settings
|
165
|
-
end
|
166
|
-
end
|
167
|
-
end
|
168
|
-
@_jars_maven_local_settings_ || nil
|
160
|
+
Jars::MavenSettings.local_settings
|
169
161
|
end
|
170
162
|
|
171
163
|
def maven_user_settings
|
172
|
-
|
173
|
-
@_jars_maven_user_settings_ = nil
|
174
|
-
end
|
175
|
-
if @_jars_maven_user_settings_.nil?
|
176
|
-
if settings = absolute( to_prop( MAVEN_SETTINGS ) )
|
177
|
-
unless File.exists?(settings)
|
178
|
-
Jars.warn { "configured ENV['#{MAVEN_SETTINGS}'] = '#{settings}' not found" }
|
179
|
-
settings = false
|
180
|
-
end
|
181
|
-
else # use maven default (user) settings
|
182
|
-
settings = File.join( user_home, '.m2', 'settings.xml' )
|
183
|
-
settings = false unless File.exists?(settings)
|
184
|
-
end
|
185
|
-
@_jars_maven_user_settings_ = settings
|
186
|
-
end
|
187
|
-
@_jars_maven_user_settings_ || nil
|
164
|
+
Jars::MavenSettings.user_settings
|
188
165
|
end
|
189
166
|
|
190
167
|
def maven_settings
|
191
|
-
|
168
|
+
Jars::MavenSettings.settings
|
192
169
|
end
|
193
170
|
|
194
171
|
def maven_global_settings
|
195
|
-
|
196
|
-
@_jars_maven_global_settings_ = nil
|
197
|
-
end
|
198
|
-
if @_jars_maven_global_settings_.nil?
|
199
|
-
if mvn_home = ENV[ 'M2_HOME' ] || ENV[ 'MAVEN_HOME' ]
|
200
|
-
settings = File.join( mvn_home, 'conf/settings.xml' )
|
201
|
-
settings = false unless File.exists?(settings)
|
202
|
-
else
|
203
|
-
settings = false
|
204
|
-
end
|
205
|
-
@_jars_maven_global_settings_ = settings
|
206
|
-
end
|
207
|
-
@_jars_maven_global_settings_ || nil
|
172
|
+
Jars::MavenSettings.global_settings
|
208
173
|
end
|
209
174
|
|
210
175
|
def local_maven_repo
|
@@ -297,6 +262,20 @@ module Jars
|
|
297
262
|
Kernel.warn(msg || block.call) if verbose?
|
298
263
|
end
|
299
264
|
|
265
|
+
def absolute( file )
|
266
|
+
File.expand_path( file ) if file
|
267
|
+
end
|
268
|
+
|
269
|
+
def user_home
|
270
|
+
ENV[ 'HOME' ] || begin
|
271
|
+
user_home = Dir.home if Dir.respond_to?(:home)
|
272
|
+
unless user_home
|
273
|
+
user_home = ENV_JAVA[ 'user.home' ] if Object.const_defined?(:ENV_JAVA)
|
274
|
+
end
|
275
|
+
user_home
|
276
|
+
end
|
277
|
+
end
|
278
|
+
|
300
279
|
private
|
301
280
|
|
302
281
|
def require_jar_with_block( group_id, artifact_id, *classifier_version )
|
@@ -319,20 +298,6 @@ module Jars
|
|
319
298
|
end
|
320
299
|
end
|
321
300
|
|
322
|
-
def absolute( file )
|
323
|
-
File.expand_path( file ) if file
|
324
|
-
end
|
325
|
-
|
326
|
-
def user_home
|
327
|
-
ENV[ 'HOME' ] || begin
|
328
|
-
user_home = Dir.home if Dir.respond_to?(:home)
|
329
|
-
unless user_home
|
330
|
-
user_home = ENV_JAVA[ 'user.home' ] if Object.const_defined?(:ENV_JAVA)
|
331
|
-
end
|
332
|
-
user_home
|
333
|
-
end
|
334
|
-
end
|
335
|
-
|
336
301
|
def detect_local_repository(settings)
|
337
302
|
return nil unless settings
|
338
303
|
|
data/lib/jars/installer.rb
CHANGED
@@ -36,25 +36,27 @@ module Jars
|
|
36
36
|
end
|
37
37
|
private :setup_scope
|
38
38
|
|
39
|
+
REG = /:jar:|:pom:|:test:|:compile:|:runtime:|:provided:|:system:/
|
40
|
+
EMPTY = ''
|
39
41
|
def initialize( line )
|
40
42
|
setup_type( line )
|
41
43
|
|
42
|
-
line.
|
43
|
-
@coord = line.sub( /:[^:]+:([A-Z]:\\)?[^:]+$/,
|
44
|
+
line.strip!
|
45
|
+
@coord = line.sub( /:[^:]+:([A-Z]:\\)?[^:]+$/, EMPTY )
|
44
46
|
first, second = @coord.split( /:#{type}:/ )
|
45
47
|
group_id, artifact_id = first.split( /:/ )
|
46
48
|
parts = group_id.split( '.' )
|
47
49
|
parts << artifact_id
|
48
50
|
parts << second.split( ':' )[ -1 ]
|
49
|
-
|
51
|
+
@file = line.slice(@coord.length, line.length).sub(REG, EMPTY).strip
|
52
|
+
last = @file.reverse.index /\\|\//
|
53
|
+
parts << line[-last..-1]
|
50
54
|
@path = File.join( parts ).strip
|
51
55
|
|
52
56
|
setup_scope( line )
|
53
57
|
|
54
|
-
reg = /:jar:|:pom:|:test:|:compile:|:runtime:|:provided:|:system:/
|
55
|
-
@file = line.slice(@coord.length, line.length).sub(reg, empty).strip
|
56
58
|
@system = line.index(':system:') != nil
|
57
|
-
@gav = @coord.sub(
|
59
|
+
@gav = @coord.sub(REG, ':')
|
58
60
|
end
|
59
61
|
|
60
62
|
def system?
|
data/lib/jars/maven_factory.rb
CHANGED
@@ -71,7 +71,7 @@ module Jars
|
|
71
71
|
maven[ 'verbose' ] = (@debug || @verbose) == true
|
72
72
|
|
73
73
|
if Jars.maven_settings
|
74
|
-
maven.options[ '-s' ] = Jars.
|
74
|
+
maven.options[ '-s' ] = Jars::MavenSettings.effective_settings
|
75
75
|
end
|
76
76
|
|
77
77
|
maven[ 'maven.repo.local' ] = "#{java.io.File.new( Jars.local_maven_repo ).absolute_path}"
|
@@ -0,0 +1,143 @@
|
|
1
|
+
require 'jar_dependencies'
|
2
|
+
require 'rubygems/request'
|
3
|
+
require 'rubygems/uri_formatter'
|
4
|
+
module Jars
|
5
|
+
class MavenSettings
|
6
|
+
|
7
|
+
LINE_SEPARATOR = java.lang.System.line_separator
|
8
|
+
|
9
|
+
class << self
|
10
|
+
|
11
|
+
def local_settings
|
12
|
+
unless instance_variable_defined?(:@_jars_maven_local_settings_)
|
13
|
+
@_jars_maven_local_settings_ = nil
|
14
|
+
end
|
15
|
+
if @_jars_maven_local_settings_.nil?
|
16
|
+
if settings = Jars.absolute( 'settings.xml' )
|
17
|
+
if File.exists?(settings)
|
18
|
+
@_jars_maven_local_settings_ = settings
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
@_jars_maven_local_settings_ || nil
|
23
|
+
end
|
24
|
+
|
25
|
+
def user_settings
|
26
|
+
unless instance_variable_defined?(:@_jars_maven_user_settings_)
|
27
|
+
@_jars_maven_user_settings_ = nil
|
28
|
+
end
|
29
|
+
if @_jars_maven_user_settings_.nil?
|
30
|
+
if settings = Jars.absolute( Jars.to_prop( MAVEN_SETTINGS ) )
|
31
|
+
unless File.exists?(settings)
|
32
|
+
Jars.warn { "configured ENV['#{MAVEN_SETTINGS}'] = '#{settings}' not found" }
|
33
|
+
settings = false
|
34
|
+
end
|
35
|
+
else # use maven default (user) settings
|
36
|
+
settings = File.join( Jars.user_home, '.m2', 'settings.xml' )
|
37
|
+
settings = false unless File.exists?(settings)
|
38
|
+
end
|
39
|
+
@_jars_maven_user_settings_ = settings
|
40
|
+
end
|
41
|
+
@_jars_maven_user_settings_ || nil
|
42
|
+
end
|
43
|
+
|
44
|
+
def effective_settings
|
45
|
+
unless instance_variable_defined?(:@_jars_effective_maven_settings_)
|
46
|
+
@_jars_effective_maven_settings_ = nil
|
47
|
+
end
|
48
|
+
if @_jars_effective_maven_settings_.nil?
|
49
|
+
begin
|
50
|
+
http = Gem::Request.proxy_uri(Gem.configuration[:http_proxy] || Gem::Request.get_proxy_from_env('http'))
|
51
|
+
https = Gem::Request.proxy_uri(Gem.configuration[:https_proxy] || Gem::Request.get_proxy_from_env('https'))
|
52
|
+
rescue NoMethodError
|
53
|
+
Jars.debug('ignore rubygems proxy configuration as rubygems is too old')
|
54
|
+
end
|
55
|
+
if http.nil? && https.nil?
|
56
|
+
@_jars_effective_maven_settings_ = settings
|
57
|
+
else
|
58
|
+
@_jars_effective_maven_settings_ =
|
59
|
+
setup_interpolated_settings(http, https) || settings
|
60
|
+
end
|
61
|
+
end
|
62
|
+
@_jars_effective_maven_settings_
|
63
|
+
end
|
64
|
+
|
65
|
+
def cleanup
|
66
|
+
if effective_settings != settings
|
67
|
+
File.unlink(effective_settings)
|
68
|
+
end
|
69
|
+
ensure
|
70
|
+
reset
|
71
|
+
end
|
72
|
+
|
73
|
+
def reset
|
74
|
+
instance_variables.each { |var| instance_variable_set(var, nil) }
|
75
|
+
end
|
76
|
+
|
77
|
+
def settings
|
78
|
+
unless instance_variable_defined?(:@_jars_maven_settings_)
|
79
|
+
@_jars_maven_settings_ = nil
|
80
|
+
end
|
81
|
+
if @_jars_maven_settings_.nil?
|
82
|
+
local_settings || user_settings
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def global_settings
|
87
|
+
unless instance_variable_defined?(:@_jars_maven_global_settings_)
|
88
|
+
@_jars_maven_global_settings_ = nil
|
89
|
+
end
|
90
|
+
if @_jars_maven_global_settings_.nil?
|
91
|
+
if mvn_home = ENV[ 'M2_HOME' ] || ENV[ 'MAVEN_HOME' ]
|
92
|
+
settings = File.join( mvn_home, 'conf/settings.xml' )
|
93
|
+
settings = false unless File.exists?(settings)
|
94
|
+
else
|
95
|
+
settings = false
|
96
|
+
end
|
97
|
+
@_jars_maven_global_settings_ = settings
|
98
|
+
end
|
99
|
+
@_jars_maven_global_settings_ || nil
|
100
|
+
end
|
101
|
+
|
102
|
+
private
|
103
|
+
|
104
|
+
def setup_interpolated_settings(http, https)
|
105
|
+
proxy = raw_proxy_settings_xml(http, https).gsub("\n", LINE_SEPARATOR)
|
106
|
+
if settings.nil?
|
107
|
+
raw = "<settings>#{LINE_SEPARATOR}#{proxy}</settings>"
|
108
|
+
else
|
109
|
+
raw = File.read(settings)
|
110
|
+
if raw.includes?('<proxy>')
|
111
|
+
Jars.info("can not interpolated proxy info for #{settings}")
|
112
|
+
return
|
113
|
+
else
|
114
|
+
raw.sub!("<settings>", "<settings>#{LINE_SEPARATOR}#{proxy}")
|
115
|
+
end
|
116
|
+
end
|
117
|
+
tempfile = java.io.File.create_temp_file('settings', '.xml')
|
118
|
+
tempfile.delete_on_exit
|
119
|
+
File.write(tempfile.path, raw)
|
120
|
+
tempfile.path
|
121
|
+
end
|
122
|
+
|
123
|
+
def raw_proxy_settings_xml(http, https)
|
124
|
+
raw = File.read(File.join(File.dirname(__FILE__), 'settings.xml'))
|
125
|
+
if http
|
126
|
+
raw.sub!('__HTTP_ACTIVE__', 'true')
|
127
|
+
raw.sub!('__HTTP_SERVER__', http.host)
|
128
|
+
raw.sub!('__HTTP_PORT__', http.port.to_s)
|
129
|
+
else
|
130
|
+
raw.sub!('__HTTP_ACTIVE__', 'false')
|
131
|
+
end
|
132
|
+
if https
|
133
|
+
raw.sub!('__HTTPS_ACTIVE__', 'true')
|
134
|
+
raw.sub!('__HTTPS_SERVER__', https.host)
|
135
|
+
raw.sub!('__HTTPS_PORT__', https.port.to_s)
|
136
|
+
else
|
137
|
+
raw.sub!('__HTTPS_ACTIVE__', 'false')
|
138
|
+
end
|
139
|
+
raw
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<proxies>
|
2
|
+
<proxy>
|
3
|
+
<active>__HTTP_ACTIVE__</active>
|
4
|
+
<protocol>http</protocol>
|
5
|
+
<host>__HTTP_SERVER__</host>
|
6
|
+
<port>__HTTP_PORT__</port>
|
7
|
+
<!--nonProxyHosts>
|
8
|
+
www.oracle.com|localhost|127.0.0.1
|
9
|
+
</nonProxyHosts-->
|
10
|
+
</proxy>
|
11
|
+
<proxy>
|
12
|
+
<active>__HTTPS_ACTIVE__</active>
|
13
|
+
<protocol>https</protocol>
|
14
|
+
<host>__HTTPS_SERVER__</host>
|
15
|
+
<port>__HTTPS_PORT__</port>
|
16
|
+
<!--nonProxyHosts>
|
17
|
+
www.oracle.com|localhost|127.0.0.1
|
18
|
+
</nonProxyHosts-->
|
19
|
+
</proxy>
|
20
|
+
</proxies>
|
data/lib/jars/version.rb
CHANGED
metadata
CHANGED
@@ -1,57 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jar-dependencies
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- christian meier
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-12-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
+
name: minitest
|
15
|
+
version_requirements: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '5.3'
|
14
20
|
requirement: !ruby/object:Gem::Requirement
|
15
21
|
requirements:
|
16
22
|
- - "~>"
|
17
23
|
- !ruby/object:Gem::Version
|
18
24
|
version: '5.3'
|
19
|
-
name: minitest
|
20
25
|
prerelease: false
|
21
26
|
type: :development
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
22
29
|
version_requirements: !ruby/object:Gem::Requirement
|
23
30
|
requirements:
|
24
31
|
- - "~>"
|
25
32
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
27
|
-
- !ruby/object:Gem::Dependency
|
33
|
+
version: '10.2'
|
28
34
|
requirement: !ruby/object:Gem::Requirement
|
29
35
|
requirements:
|
30
36
|
- - "~>"
|
31
37
|
- !ruby/object:Gem::Version
|
32
38
|
version: '10.2'
|
33
|
-
name: rake
|
34
39
|
prerelease: false
|
35
40
|
type: :development
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: ruby-maven
|
36
43
|
version_requirements: !ruby/object:Gem::Requirement
|
37
44
|
requirements:
|
38
45
|
- - "~>"
|
39
46
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
41
|
-
- !ruby/object:Gem::Dependency
|
47
|
+
version: 3.3.11
|
42
48
|
requirement: !ruby/object:Gem::Requirement
|
43
49
|
requirements:
|
44
50
|
- - "~>"
|
45
51
|
- !ruby/object:Gem::Version
|
46
52
|
version: 3.3.11
|
47
|
-
name: ruby-maven
|
48
53
|
prerelease: false
|
49
54
|
type: :development
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: 3.3.11
|
55
55
|
description: manage jar dependencies for gems and keep track which jar was already loaded using maven artifact coordinates. it warns on version conflicts and loads only ONE jar assuming the first one is compatible to the second one otherwise your project needs to lock down the right version by providing a Jars.lock file.
|
56
56
|
email:
|
57
57
|
- mkristian@web.de
|
@@ -80,8 +80,10 @@ files:
|
|
80
80
|
- lib/jars/lock_down_pom.rb
|
81
81
|
- lib/jars/maven_exec.rb
|
82
82
|
- lib/jars/maven_factory.rb
|
83
|
+
- lib/jars/maven_settings.rb
|
83
84
|
- lib/jars/output_jars_pom.rb
|
84
85
|
- lib/jars/post_install_hook.rb
|
86
|
+
- lib/jars/settings.xml
|
85
87
|
- lib/jars/setup.rb
|
86
88
|
- lib/jars/version.rb
|
87
89
|
- lib/rubygems_plugin.rb
|