jar-dependencies 0.3.11 → 0.3.12
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Mavenfile +29 -33
- data/Rakefile +13 -13
- data/Readme.md +8 -8
- data/bin/lock_jars +11 -12
- data/jar-dependencies.gemspec +11 -11
- data/lib/jar_dependencies.rb +91 -97
- data/lib/jars/attach_jars_pom.rb +8 -8
- data/lib/jars/classpath.rb +31 -33
- data/lib/jars/gemspec_artifacts.rb +30 -38
- data/lib/jars/gemspec_pom.rb +2 -2
- data/lib/jars/installer.rb +85 -89
- data/lib/jars/lock.rb +16 -18
- data/lib/jars/lock_down.rb +38 -39
- data/lib/jars/lock_down_pom.rb +14 -11
- data/lib/jars/maven_exec.rb +31 -31
- data/lib/jars/maven_factory.rb +49 -56
- data/lib/jars/maven_settings.rb +13 -20
- data/lib/jars/output_jars_pom.rb +2 -2
- data/lib/jars/post_install_hook.rb +2 -2
- data/lib/jars/setup.rb +1 -1
- data/lib/jars/version.rb +1 -1
- metadata +26 -23
data/lib/jars/attach_jars_pom.rb
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
# this file is maven DSL
|
2
2
|
|
3
|
-
(
|
4
|
-
coord = ENV_JAVA[
|
3
|
+
(0..10_000).each do |i|
|
4
|
+
coord = ENV_JAVA["jars.#{i}"]
|
5
5
|
break unless coord
|
6
|
-
artifact = Maven::Tools::Artifact.from_coordinate(
|
6
|
+
artifact = Maven::Tools::Artifact.from_coordinate(coord)
|
7
7
|
exclusions = []
|
8
|
-
(
|
9
|
-
exclusion = ENV_JAVA[
|
8
|
+
(0..10_000).each do |j|
|
9
|
+
exclusion = ENV_JAVA["jars.#{i}.exclusions.#{j}"]
|
10
10
|
break unless exclusion
|
11
11
|
exclusions << exclusion
|
12
12
|
end
|
13
|
-
scope = ENV_JAVA[
|
13
|
+
scope = ENV_JAVA["jars.#{i}.scope"]
|
14
14
|
artifact.scope = scope if scope
|
15
|
-
classifier = ENV_JAVA[
|
15
|
+
classifier = ENV_JAVA["jars.#{i}.classifier"]
|
16
16
|
artifact.classifier = classifier if classifier
|
17
17
|
|
18
18
|
# declare the artifact inside the POM
|
19
|
-
dependency_artifact(
|
19
|
+
dependency_artifact(artifact) do
|
20
20
|
exclusions.each do |ex|
|
21
21
|
exclusion ex
|
22
22
|
end
|
data/lib/jars/classpath.rb
CHANGED
@@ -3,42 +3,40 @@ require 'jars/lock'
|
|
3
3
|
require 'fileutils'
|
4
4
|
|
5
5
|
module Jars
|
6
|
-
|
7
6
|
class Classpath
|
8
|
-
|
9
7
|
# convenient method
|
10
|
-
def self.require(
|
11
|
-
new.require(
|
8
|
+
def self.require(scope = nil)
|
9
|
+
new.require(scope)
|
12
10
|
end
|
13
11
|
|
14
12
|
# convenient method
|
15
|
-
def self.classpath(
|
16
|
-
new.classpath(
|
13
|
+
def self.classpath(scope = nil)
|
14
|
+
new.classpath(scope)
|
17
15
|
end
|
18
16
|
|
19
17
|
# convenient method
|
20
|
-
def self.classpath_string(
|
21
|
-
new.classpath_string(
|
18
|
+
def self.classpath_string(scope = nil)
|
19
|
+
new.classpath_string(scope)
|
22
20
|
end
|
23
21
|
|
24
|
-
def initialize(
|
22
|
+
def initialize(spec = nil, deps = nil)
|
25
23
|
@spec = spec
|
26
24
|
@deps = deps
|
27
25
|
end
|
28
26
|
|
29
27
|
def mvn
|
30
|
-
@mvn ||= MavenExec.new(
|
28
|
+
@mvn ||= MavenExec.new(@spec)
|
31
29
|
end
|
32
30
|
|
33
|
-
def workdir(
|
34
|
-
dir = File.join(
|
35
|
-
dir if File.directory?(
|
31
|
+
def workdir(dirname)
|
32
|
+
dir = File.join(mvn.basedir, dirname)
|
33
|
+
dir if File.directory?(dir)
|
36
34
|
end
|
37
35
|
|
38
36
|
def dependencies_list
|
39
37
|
if @deps.nil?
|
40
|
-
deps = Jars.lock_path(
|
41
|
-
@deps = deps if deps && File.exist?(
|
38
|
+
deps = Jars.lock_path(mvn.basedir)
|
39
|
+
@deps = deps if deps && File.exist?(deps)
|
42
40
|
end
|
43
41
|
if @deps
|
44
42
|
@deps
|
@@ -47,50 +45,50 @@ module Jars
|
|
47
45
|
end
|
48
46
|
end
|
49
47
|
private :dependencies_list
|
50
|
-
|
51
|
-
DEPENDENCY_LIST = 'dependencies.list'
|
48
|
+
|
49
|
+
DEPENDENCY_LIST = 'dependencies.list'.freeze
|
52
50
|
def resolve_dependencies
|
53
|
-
basedir = workdir(
|
54
|
-
deps = File.join(
|
55
|
-
mvn.resolve_dependencies_list(
|
51
|
+
basedir = workdir('pkg') || workdir('target') || workdir('')
|
52
|
+
deps = File.join(basedir, DEPENDENCY_LIST)
|
53
|
+
mvn.resolve_dependencies_list(deps)
|
56
54
|
deps
|
57
55
|
end
|
58
56
|
private :resolve_dependencies
|
59
57
|
|
60
|
-
def require(
|
61
|
-
process(
|
58
|
+
def require(scope = nil)
|
59
|
+
process(scope) do |jar|
|
62
60
|
if jar.scope == :system
|
63
61
|
Kernel.require jar.path
|
64
62
|
else
|
65
|
-
require_jar(
|
63
|
+
require_jar(*jar.gacv)
|
66
64
|
end
|
67
65
|
end
|
68
|
-
if scope
|
69
|
-
process(
|
70
|
-
Jars.mark_as_required(
|
66
|
+
if scope.nil? || scope == :runtime
|
67
|
+
process(:provided) do |jar|
|
68
|
+
Jars.mark_as_required(*jar.gacv)
|
71
69
|
end
|
72
70
|
end
|
73
71
|
end
|
74
72
|
|
75
|
-
def classpath(
|
73
|
+
def classpath(scope = nil)
|
76
74
|
classpath = []
|
77
|
-
process(
|
75
|
+
process(scope) do |jar|
|
78
76
|
classpath << jar.file
|
79
77
|
end
|
80
78
|
classpath
|
81
79
|
end
|
82
80
|
|
83
|
-
def process(
|
81
|
+
def process(scope, &block)
|
84
82
|
deps = dependencies_list
|
85
|
-
Lock.new(
|
83
|
+
Lock.new(deps).process(scope, &block)
|
86
84
|
ensure
|
87
85
|
# just delete the temporary file if it exists
|
88
|
-
FileUtils.rm_f(
|
86
|
+
FileUtils.rm_f(DEPENDENCY_LIST)
|
89
87
|
end
|
90
88
|
private :process
|
91
89
|
|
92
|
-
def classpath_string(
|
93
|
-
classpath(
|
90
|
+
def classpath_string(scope = nil)
|
91
|
+
classpath(scope).join(File::PATH_SEPARATOR)
|
94
92
|
end
|
95
93
|
end
|
96
94
|
end
|
@@ -1,8 +1,7 @@
|
|
1
1
|
module Jars
|
2
|
-
|
3
2
|
class MavenVersion < String
|
4
3
|
def self.new(*args)
|
5
|
-
if args.
|
4
|
+
if args.empty? || (args.size == 1 && args[0].nil?)
|
6
5
|
nil
|
7
6
|
else
|
8
7
|
low, high = convert(args[0])
|
@@ -20,7 +19,7 @@ module Jars
|
|
20
19
|
def self.convert(arg, low = nil, high = nil)
|
21
20
|
if arg =~ /~>/
|
22
21
|
val = arg.sub(/~>\s*/, '')
|
23
|
-
last = val
|
22
|
+
last = val =~ /\./ ? val.sub(/\.[0-9]*[a-z]+.*$/, '').sub(/\.[^.]+$/, '.99999') : '99999'
|
24
23
|
["[#{snapshot_version(val)}", "#{snapshot_version(last)}]"]
|
25
24
|
elsif arg =~ />=/
|
26
25
|
val = arg.sub(/>=\s*/, '')
|
@@ -29,7 +28,7 @@ module Jars
|
|
29
28
|
val = arg.sub(/<=\s*/, '')
|
30
29
|
[(nil || low), "#{snapshot_version(val)}]"]
|
31
30
|
# treat '!' the same way as '>' since maven can not describe such range
|
32
|
-
elsif arg =~ /[!>]/
|
31
|
+
elsif arg =~ /[!>]/
|
33
32
|
val = arg.sub(/[!>]\s*/, '')
|
34
33
|
["(#{snapshot_version(val)}", (nil || high)]
|
35
34
|
elsif arg =~ /</
|
@@ -38,8 +37,8 @@ module Jars
|
|
38
37
|
elsif arg =~ /\=/
|
39
38
|
val = arg.sub(/=\s*/, '')
|
40
39
|
# for prereleased version pick the maven version (no version range)
|
41
|
-
if val
|
42
|
-
[
|
40
|
+
if val =~ /[a-z]|[A-Z]/
|
41
|
+
[val, val]
|
43
42
|
else
|
44
43
|
["[#{val}", "#{val}.0.0.0.0.1)"]
|
45
44
|
end
|
@@ -49,7 +48,7 @@ module Jars
|
|
49
48
|
end
|
50
49
|
end
|
51
50
|
|
52
|
-
def self.snapshot_version(
|
51
|
+
def self.snapshot_version(val)
|
53
52
|
if val.match(/[a-z]|[A-Z]/) && !val.match(/-SNAPSHOT|[${}]/)
|
54
53
|
val + '-SNAPSHOT'
|
55
54
|
else
|
@@ -59,12 +58,11 @@ module Jars
|
|
59
58
|
end
|
60
59
|
|
61
60
|
class GemspecArtifacts
|
62
|
-
|
63
61
|
class Exclusion
|
64
62
|
attr_reader :group_id, :artifact_id
|
65
63
|
|
66
64
|
def initialize(line)
|
67
|
-
@group_id, @artifact_id = line.gsub(/['"]/, '').strip.split(
|
65
|
+
@group_id, @artifact_id = line.gsub(/['"]/, '').strip.split(':')
|
68
66
|
@artifact_id.strip!
|
69
67
|
end
|
70
68
|
|
@@ -72,68 +70,62 @@ module Jars
|
|
72
70
|
"#{@group_id}:#{@artifact_id}"
|
73
71
|
end
|
74
72
|
end
|
75
|
-
|
76
|
-
class Exclusions < Array
|
77
73
|
|
74
|
+
class Exclusions < Array
|
78
75
|
def to_s
|
79
76
|
"[#{join(', ')}]"
|
80
77
|
end
|
81
78
|
|
82
|
-
def initialize(
|
79
|
+
def initialize(line)
|
83
80
|
super()
|
84
|
-
line.gsub(/'"|^\s*\[|\]\s*$/, '').split(
|
85
|
-
self.<< Exclusion.new(
|
81
|
+
line.gsub(/'"|^\s*\[|\]\s*$/, '').split(/,\s*/).each do |exclusion|
|
82
|
+
self.<< Exclusion.new(exclusion)
|
86
83
|
end
|
87
84
|
freeze
|
88
85
|
end
|
89
86
|
end
|
90
87
|
|
91
88
|
class Artifact
|
92
|
-
|
93
89
|
attr_reader :type, :group_id, :artifact_id, :classifier, :version, :scope, :exclusions
|
94
90
|
|
95
|
-
ALLOWED_TYPES = [
|
96
|
-
|
97
|
-
def initialize(
|
91
|
+
ALLOWED_TYPES = %w[jar pom].freeze
|
92
|
+
|
93
|
+
def initialize(options, *args)
|
98
94
|
@type, @group_id, @artifact_id, @classifier, @version, @exclusions = *args
|
99
|
-
options.each do |k,v|
|
100
|
-
instance_variable_set(
|
95
|
+
options.each do |k, v|
|
96
|
+
instance_variable_set("@#{k}", v)
|
101
97
|
end
|
102
98
|
end
|
103
99
|
|
104
|
-
def self.new(
|
100
|
+
def self.new(line)
|
105
101
|
line = line.strip
|
106
|
-
index = line.index(
|
107
|
-
if index.nil?
|
108
|
-
return nil
|
109
|
-
end
|
102
|
+
index = line.index(/\s/)
|
103
|
+
return nil if index.nil?
|
110
104
|
type = line[0..index].strip
|
111
|
-
unless ALLOWED_TYPES.member?(
|
112
|
-
return nil
|
113
|
-
end
|
105
|
+
return nil unless ALLOWED_TYPES.member?(type)
|
114
106
|
line = line[index..-1]
|
115
107
|
line.gsub!(/['"]/, '')
|
116
108
|
line.strip!
|
117
109
|
|
118
110
|
options = {}
|
119
111
|
line.sub!(/,\s*:exclusions\s*(:|=>)\s*(\[[^\]]+\])/) do
|
120
|
-
options[
|
112
|
+
options[:exclusions] = Exclusions.new(Regexp.last_match(2).strip)
|
121
113
|
''
|
122
114
|
end
|
123
115
|
line.sub!(/,\s*:([a-z]+)\s*(:|=>)\s*(:?[a-zA-Z0-9_]+)/) do
|
124
|
-
options[
|
116
|
+
options[Regexp.last_match(1).to_sym] = Regexp.last_match(3).sub(/^:/, '')
|
125
117
|
''
|
126
118
|
end
|
127
119
|
exclusions = nil
|
128
120
|
line.sub!(/[,:]\s*\[(.+:.+,?\s*)+\]$/) do |a|
|
129
|
-
exclusions = Exclusions.new(
|
121
|
+
exclusions = Exclusions.new(a[1..-1].strip)
|
130
122
|
''
|
131
123
|
end
|
132
124
|
|
133
125
|
line.strip!
|
134
126
|
line.gsub!(/,\s*/, ':')
|
135
127
|
|
136
|
-
if line
|
128
|
+
if line =~ /[\[\(\)\]]/
|
137
129
|
index = line.index(/[\[\(].+$/)
|
138
130
|
version = line[index..-1].sub(/:/, ', ')
|
139
131
|
line = line[0..index - 1].strip.sub(/:$/, '')
|
@@ -153,7 +145,7 @@ module Jars
|
|
153
145
|
warn line
|
154
146
|
return nil
|
155
147
|
end
|
156
|
-
super(
|
148
|
+
super(options, type, group_id, artifact_id, classifier, version, exclusions)
|
157
149
|
end
|
158
150
|
|
159
151
|
def to_s
|
@@ -174,7 +166,7 @@ module Jars
|
|
174
166
|
def to_coord_no_classifier
|
175
167
|
args = [@group_id, @artifact_id]
|
176
168
|
args << @type
|
177
|
-
args << MavenVersion.new(
|
169
|
+
args << MavenVersion.new(@version)
|
178
170
|
args.join(':')
|
179
171
|
end
|
180
172
|
|
@@ -182,7 +174,7 @@ module Jars
|
|
182
174
|
args = [@group_id, @artifact_id]
|
183
175
|
args << @classifier if @classifier
|
184
176
|
args << @type
|
185
|
-
args << MavenVersion.new(
|
177
|
+
args << MavenVersion.new(@version)
|
186
178
|
args.join(':')
|
187
179
|
end
|
188
180
|
|
@@ -195,11 +187,11 @@ module Jars
|
|
195
187
|
|
196
188
|
attr_reader :artifacts
|
197
189
|
|
198
|
-
def initialize(
|
190
|
+
def initialize(spec)
|
199
191
|
@artifacts = []
|
200
192
|
spec.requirements.each do |req|
|
201
|
-
req.split(
|
202
|
-
if (
|
193
|
+
req.split(/\n/).each do |line|
|
194
|
+
if (a = Artifact.new(line))
|
203
195
|
@artifacts << a
|
204
196
|
end
|
205
197
|
end
|
data/lib/jars/gemspec_pom.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# this file is maven DSL and used by maven via jars/maven_exec.rb
|
2
2
|
|
3
|
-
eval(
|
3
|
+
eval(File.read(File.join(File.dirname(__FILE__), 'attach_jars_pom.rb')))
|
4
4
|
|
5
|
-
eval(
|
5
|
+
eval(File.read(File.join(File.dirname(__FILE__), 'output_jars_pom.rb')))
|
data/lib/jars/installer.rb
CHANGED
@@ -3,18 +3,14 @@ require 'jars/maven_exec'
|
|
3
3
|
|
4
4
|
module Jars
|
5
5
|
class Installer
|
6
|
-
|
7
6
|
class Dependency
|
8
|
-
|
9
7
|
attr_reader :path, :file, :gav, :scope, :type, :coord
|
10
8
|
|
11
|
-
def self.new(
|
12
|
-
if line
|
13
|
-
super
|
14
|
-
end
|
9
|
+
def self.new(line)
|
10
|
+
super if line =~ /:jar:|:pom:/
|
15
11
|
end
|
16
12
|
|
17
|
-
def setup_type(
|
13
|
+
def setup_type(line)
|
18
14
|
if line.index(':pom:')
|
19
15
|
@type = :pom
|
20
16
|
elsif line.index(':jar:')
|
@@ -23,7 +19,7 @@ module Jars
|
|
23
19
|
end
|
24
20
|
private :setup_type
|
25
21
|
|
26
|
-
def setup_scope(
|
22
|
+
def setup_scope(line)
|
27
23
|
@scope =
|
28
24
|
case line
|
29
25
|
when /:provided:/
|
@@ -37,25 +33,25 @@ module Jars
|
|
37
33
|
private :setup_scope
|
38
34
|
|
39
35
|
REG = /:jar:|:pom:|:test:|:compile:|:runtime:|:provided:|:system:/
|
40
|
-
EMPTY = ''
|
41
|
-
def initialize(
|
42
|
-
setup_type(
|
36
|
+
EMPTY = ''.freeze
|
37
|
+
def initialize(line)
|
38
|
+
setup_type(line)
|
43
39
|
|
44
40
|
line.strip!
|
45
|
-
@coord = line.sub(
|
46
|
-
first, second = @coord.split(
|
47
|
-
group_id, artifact_id = first.split(
|
48
|
-
parts = group_id.split(
|
41
|
+
@coord = line.sub(/:[^:]+:([A-Z]:\\)?[^:]+$/, EMPTY)
|
42
|
+
first, second = @coord.split(/:#{type}:/)
|
43
|
+
group_id, artifact_id = first.split(/:/)
|
44
|
+
parts = group_id.split('.')
|
49
45
|
parts << artifact_id
|
50
|
-
parts << second.split(
|
46
|
+
parts << second.split(':')[-1]
|
51
47
|
@file = line.slice(@coord.length, line.length).sub(REG, EMPTY).strip
|
52
48
|
last = @file.reverse.index /\\|\//
|
53
49
|
parts << line[-last..-1]
|
54
|
-
@path = File.join(
|
50
|
+
@path = File.join(parts).strip
|
55
51
|
|
56
|
-
setup_scope(
|
52
|
+
setup_scope(line)
|
57
53
|
|
58
|
-
@system = line.index(':system:')
|
54
|
+
@system = !line.index(':system:').nil?
|
59
55
|
@gav = @coord.sub(REG, ':')
|
60
56
|
end
|
61
57
|
|
@@ -64,24 +60,24 @@ module Jars
|
|
64
60
|
end
|
65
61
|
end
|
66
62
|
|
67
|
-
def self.install_jars(
|
68
|
-
new.install_jars(
|
63
|
+
def self.install_jars(write_require_file = false)
|
64
|
+
new.install_jars(write_require_file)
|
69
65
|
end
|
70
|
-
|
71
|
-
def self.load_from_maven(
|
66
|
+
|
67
|
+
def self.load_from_maven(file)
|
72
68
|
result = []
|
73
|
-
File.read(
|
74
|
-
dep = Dependency.new(
|
69
|
+
File.read(file).each_line do |line|
|
70
|
+
dep = Dependency.new(line)
|
75
71
|
result << dep if dep && dep.scope == :runtime
|
76
72
|
end
|
77
73
|
result
|
78
74
|
end
|
79
75
|
|
80
|
-
def self.write_require_file(
|
81
|
-
warn
|
76
|
+
def self.write_require_file(require_filename)
|
77
|
+
warn 'deprecated'
|
82
78
|
if needs_to_write?(require_filename)
|
83
|
-
FileUtils.mkdir_p(
|
84
|
-
f = File.open(
|
79
|
+
FileUtils.mkdir_p(File.dirname(require_filename))
|
80
|
+
f = File.open(require_filename, 'w')
|
85
81
|
f.puts COMMENT
|
86
82
|
f.puts "require 'jar_dependencies'"
|
87
83
|
f.puts
|
@@ -89,113 +85,115 @@ module Jars
|
|
89
85
|
end
|
90
86
|
end
|
91
87
|
|
92
|
-
def self.vendor_file(
|
88
|
+
def self.vendor_file(dir, dep)
|
93
89
|
if !dep.system? && dep.type == :jar && dep.scope == :runtime
|
94
|
-
vendored = File.join(
|
95
|
-
FileUtils.mkdir_p(
|
96
|
-
FileUtils.cp(
|
90
|
+
vendored = File.join(dir, dep.path)
|
91
|
+
FileUtils.mkdir_p(File.dirname(vendored))
|
92
|
+
FileUtils.cp(dep.file, vendored)
|
97
93
|
end
|
98
94
|
end
|
99
95
|
|
100
|
-
def self.write_dep(
|
101
|
-
warn
|
102
|
-
print_require_jar(
|
96
|
+
def self.write_dep(file, _dir, dep, _vendor)
|
97
|
+
warn 'deprecated'
|
98
|
+
print_require_jar(file, dep)
|
103
99
|
end
|
104
100
|
|
105
|
-
def self.print_require_jar(
|
101
|
+
def self.print_require_jar(file, dep, fallback = false)
|
106
102
|
return if dep.type != :jar || dep.scope != :runtime
|
107
103
|
if dep.system?
|
108
|
-
file.puts(
|
104
|
+
file.puts("require '#{dep.file}'") if file
|
109
105
|
elsif dep.scope == :runtime
|
110
106
|
if fallback
|
111
|
-
file.puts(
|
107
|
+
file.puts(" require '#{dep.path}'") if file
|
112
108
|
else
|
113
|
-
file.puts(
|
109
|
+
file.puts(" require_jar '#{dep.gav.gsub(':', "', '")}'") if file
|
114
110
|
end
|
115
111
|
end
|
116
112
|
end
|
117
113
|
|
118
|
-
COMMENT = '# this is a generated file, to avoid over-writing it just delete this comment'
|
114
|
+
COMMENT = '# this is a generated file, to avoid over-writing it just delete this comment'.freeze
|
119
115
|
def self.needs_to_write?(require_filename)
|
120
|
-
require_filename
|
116
|
+
require_filename && (!File.exist?(require_filename) || File.read(require_filename).match(COMMENT))
|
121
117
|
end
|
122
118
|
|
123
|
-
def self.install_deps(
|
124
|
-
warn
|
125
|
-
write_require_jars(
|
126
|
-
vendor_jars(
|
119
|
+
def self.install_deps(deps, dir, require_filename, vendor)
|
120
|
+
warn 'deprecated'
|
121
|
+
write_require_jars(deps, require_filename)
|
122
|
+
vendor_jars(deps, dir) if dir && vendor
|
127
123
|
end
|
128
124
|
|
129
|
-
def self.write_require_jars(
|
125
|
+
def self.write_require_jars(deps, require_filename)
|
130
126
|
if needs_to_write?(require_filename)
|
131
|
-
FileUtils.mkdir_p(
|
132
|
-
File.open(
|
127
|
+
FileUtils.mkdir_p(File.dirname(require_filename))
|
128
|
+
File.open(require_filename, 'w') do |f|
|
133
129
|
f.puts COMMENT
|
134
|
-
f.puts
|
130
|
+
f.puts 'begin'
|
135
131
|
f.puts " require 'jar_dependencies'"
|
136
|
-
f.puts
|
132
|
+
f.puts 'rescue LoadError'
|
137
133
|
deps.each do |dep|
|
138
|
-
|
139
|
-
print_require_jar(
|
134
|
+
# do not use require_jar method
|
135
|
+
print_require_jar(f, dep, true)
|
140
136
|
end
|
141
|
-
f.puts
|
137
|
+
f.puts 'end'
|
142
138
|
f.puts
|
143
|
-
f.puts
|
139
|
+
f.puts 'if defined? Jars'
|
144
140
|
deps.each do |dep|
|
145
|
-
print_require_jar(
|
141
|
+
print_require_jar(f, dep)
|
146
142
|
end
|
147
|
-
f.puts
|
143
|
+
f.puts 'end'
|
148
144
|
yield f if block_given?
|
149
145
|
end
|
150
146
|
end
|
151
147
|
end
|
152
148
|
|
153
|
-
def self.vendor_jars(
|
149
|
+
def self.vendor_jars(deps, dir)
|
154
150
|
deps.each do |dep|
|
155
|
-
vendor_file(
|
151
|
+
vendor_file(dir, dep)
|
156
152
|
end
|
157
153
|
end
|
158
154
|
|
159
|
-
def initialize(
|
160
|
-
@mvn = MavenExec.new(
|
155
|
+
def initialize(spec = nil)
|
156
|
+
@mvn = MavenExec.new(spec)
|
161
157
|
end
|
162
158
|
|
163
|
-
def spec
|
159
|
+
def spec
|
160
|
+
@mvn.spec
|
161
|
+
end
|
164
162
|
|
165
|
-
def vendor_jars(
|
163
|
+
def vendor_jars(write_require_file = true, vendor_dir = nil)
|
166
164
|
return unless has_jars?
|
167
|
-
if Jars.to_prop(
|
165
|
+
if Jars.to_prop(Jars::VENDOR) == 'false'
|
168
166
|
vendor_dir = nil
|
169
167
|
else
|
170
168
|
vendor_dir ||= spec.require_path
|
171
169
|
end
|
172
|
-
do_install(
|
170
|
+
do_install(vendor_dir, write_require_file)
|
173
171
|
end
|
174
172
|
|
175
173
|
def self.vendor_jars!(vendor_dir = nil)
|
176
174
|
new.vendor_jars!(true, vendor_dir)
|
177
175
|
end
|
178
176
|
|
179
|
-
def vendor_jars!(
|
177
|
+
def vendor_jars!(write_require_file = true, vendor_dir = nil)
|
180
178
|
vendor_dir ||= spec.require_path
|
181
|
-
do_install(
|
179
|
+
do_install(vendor_dir, write_require_file)
|
182
180
|
end
|
183
181
|
|
184
|
-
def install_jars(
|
182
|
+
def install_jars(write_require_file = true)
|
185
183
|
return unless has_jars?
|
186
|
-
do_install(
|
184
|
+
do_install(nil, write_require_file)
|
187
185
|
end
|
188
186
|
|
189
|
-
def ruby_maven_install_options=(
|
190
|
-
@mvn.ruby_maven_install_options=
|
187
|
+
def ruby_maven_install_options=(options)
|
188
|
+
@mvn.ruby_maven_install_options = options
|
191
189
|
end
|
192
190
|
|
193
191
|
def has_jars?
|
194
192
|
# first look if there are any requirements in the spec
|
195
193
|
# and then if gem depends on jar-dependencies for runtime.
|
196
194
|
# only then install the jars declared in the requirements
|
197
|
-
result = (
|
198
|
-
|
195
|
+
result = (spec = self.spec) && !spec.requirements.empty? &&
|
196
|
+
spec.dependencies.detect { |d| d.name == 'jar-dependencies' && d.type == :runtime } != nil
|
199
197
|
if result && spec.platform.to_s != 'java'
|
200
198
|
Jars.warn "\njar dependencies found on non-java platform gem - do not install jars\n"
|
201
199
|
false
|
@@ -203,42 +201,40 @@ module Jars
|
|
203
201
|
result
|
204
202
|
end
|
205
203
|
end
|
206
|
-
|
204
|
+
alias jars? has_jars?
|
207
205
|
|
208
206
|
private
|
209
207
|
|
210
|
-
def do_install(
|
208
|
+
def do_install(vendor_dir, write_require_file)
|
211
209
|
if !spec.require_paths.include?(vendor_dir) && vendor_dir
|
212
210
|
raise "vendor dir #{vendor_dir} not in require_paths of gemspec #{spec.require_paths}"
|
213
211
|
end
|
214
|
-
target_dir = File.join(
|
215
|
-
jars_file = File.join(
|
212
|
+
target_dir = File.join(@mvn.basedir, vendor_dir || spec.require_path)
|
213
|
+
jars_file = File.join(target_dir, "#{spec.name}_jars.rb")
|
216
214
|
|
217
215
|
# write out new jars_file it write_require_file is true or
|
218
216
|
# check timestamps:
|
219
217
|
# do not generate file if specfile is older then the generated file
|
220
|
-
if !
|
221
|
-
|
222
|
-
|
218
|
+
if !write_require_file &&
|
219
|
+
File.exist?(jars_file) &&
|
220
|
+
File.mtime(@mvn.specfile) < File.mtime(jars_file)
|
223
221
|
# leave jars_file as is
|
224
222
|
jars_file = nil
|
225
223
|
end
|
226
|
-
deps = install_dependencies
|
227
|
-
self.class.write_require_jars(
|
228
|
-
if vendor_dir
|
229
|
-
self.class.vendor_jars( deps, target_dir )
|
230
|
-
end
|
224
|
+
deps = install_dependencies
|
225
|
+
self.class.write_require_jars(deps, jars_file)
|
226
|
+
self.class.vendor_jars(deps, target_dir) if vendor_dir
|
231
227
|
end
|
232
228
|
|
233
229
|
def install_dependencies
|
234
|
-
deps = File.join(
|
230
|
+
deps = File.join(@mvn.basedir, 'deps.lst')
|
235
231
|
|
236
232
|
puts " jar dependencies for #{spec.spec_name} . . ." unless Jars.quiet?
|
237
|
-
@mvn.resolve_dependencies_list(
|
233
|
+
@mvn.resolve_dependencies_list(deps)
|
238
234
|
|
239
|
-
self.class.load_from_maven(
|
235
|
+
self.class.load_from_maven(deps)
|
240
236
|
ensure
|
241
|
-
FileUtils.rm_f(
|
237
|
+
FileUtils.rm_f(deps) if deps
|
242
238
|
end
|
243
239
|
end
|
244
240
|
# to stay backward compatible
|