jar-dependencies 0.4.0 → 0.5.2
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 +5 -5
- data/Mavenfile +6 -10
- data/Rakefile +6 -22
- data/Readme.md +7 -2
- data/{bin → exe}/lock_jars +7 -2
- data/jar-dependencies.gemspec +25 -25
- data/lib/jar-dependencies.rb +2 -0
- data/lib/jar_dependencies.rb +107 -99
- data/lib/jar_install_post_install_hook.rb +2 -0
- data/lib/jars/attach_jars_pom.rb +6 -2
- data/lib/jars/classpath.rb +8 -10
- data/lib/jars/gemspec_artifacts.rb +62 -56
- data/lib/jars/gemspec_pom.rb +8 -2
- data/lib/jars/installer.rb +49 -70
- data/lib/jars/lock.rb +10 -7
- data/lib/jars/lock_down.rb +21 -29
- data/lib/jars/lock_down_pom.rb +9 -4
- data/lib/jars/maven_exec.rb +13 -10
- data/lib/jars/maven_factory.rb +12 -13
- data/lib/jars/maven_settings.rb +21 -27
- data/lib/jars/output_jars_pom.rb +10 -2
- data/lib/jars/post_install_hook.rb +3 -1
- data/lib/jars/setup.rb +2 -0
- data/lib/jars/version.rb +5 -3
- data/lib/rubygems_plugin.rb +2 -0
- metadata +23 -50
- data/lib/jar_installer.rb +0 -1
data/lib/jars/maven_exec.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'jar_dependencies'
|
2
4
|
require 'jars/maven_factory'
|
3
5
|
|
@@ -23,11 +25,11 @@ module Jars
|
|
23
25
|
setup(spec)
|
24
26
|
rescue StandardError, LoadError => e
|
25
27
|
# If spec load fails, skip looking for jar-dependencies
|
26
|
-
warn
|
28
|
+
warn "jar-dependencies: #{e}"
|
27
29
|
warn e.backtrace.join("\n") if Jars.verbose?
|
28
30
|
end
|
29
31
|
|
30
|
-
def setup(spec = nil, allow_no_file
|
32
|
+
def setup(spec = nil, allow_no_file: false)
|
31
33
|
spec ||= find_spec(allow_no_file)
|
32
34
|
|
33
35
|
case spec
|
@@ -35,23 +37,24 @@ module Jars
|
|
35
37
|
@specfile = File.expand_path(spec)
|
36
38
|
@basedir = File.dirname(@specfile)
|
37
39
|
Dir.chdir(@basedir) do
|
38
|
-
spec = eval(File.read(@specfile), TOPLEVEL_BINDING, @specfile)
|
40
|
+
spec = eval(File.read(@specfile), TOPLEVEL_BINDING, @specfile) # rubocop:disable Security/Eval
|
39
41
|
end
|
40
42
|
when Gem::Specification
|
41
|
-
if File.exist?(spec.
|
43
|
+
if File.exist?(spec.loaded_from)
|
42
44
|
@basedir = spec.gem_dir
|
43
|
-
@specfile = spec.
|
45
|
+
@specfile = spec.loaded_from
|
44
46
|
else
|
45
47
|
# this happens with bundle and local gems
|
46
48
|
# there the spec_file is "not installed" but inside
|
47
49
|
# the gem_dir directory
|
48
50
|
Dir.chdir(spec.gem_dir) do
|
49
|
-
setup(nil, true)
|
51
|
+
setup(nil, allow_no_file: true)
|
50
52
|
end
|
51
53
|
end
|
52
|
-
when
|
54
|
+
when nil
|
55
|
+
# ignore
|
53
56
|
else
|
54
|
-
Jars.debug('spec must be either String or Gem::Specification. '
|
57
|
+
Jars.debug('spec must be either String or Gem::Specification. ' \
|
55
58
|
'File an issue on github if you need it.')
|
56
59
|
end
|
57
60
|
@spec = spec
|
@@ -63,10 +66,10 @@ module Jars
|
|
63
66
|
|
64
67
|
def resolve_dependencies_list(file)
|
65
68
|
factory = MavenFactory.new(@options)
|
66
|
-
maven = factory.maven_new(File.expand_path('
|
69
|
+
maven = factory.maven_new(File.expand_path('gemspec_pom.rb', __dir__))
|
67
70
|
|
68
71
|
is_local_file = File.expand_path(File.dirname(@specfile)) == File.expand_path(Dir.pwd)
|
69
|
-
maven.attach_jars(@spec, is_local_file)
|
72
|
+
maven.attach_jars(@spec, all_dependencies: is_local_file)
|
70
73
|
|
71
74
|
maven['jars.specfile'] = @specfile.to_s
|
72
75
|
maven['outputAbsoluteArtifactFilename'] = 'true'
|
data/lib/jars/maven_factory.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'jar_dependencies'
|
2
4
|
require 'jars/gemspec_artifacts'
|
3
5
|
|
4
6
|
module Jars
|
5
7
|
class MavenFactory
|
6
8
|
module AttachJars
|
7
|
-
def attach_jars(spec, all_dependencies
|
9
|
+
def attach_jars(spec, all_dependencies: false)
|
8
10
|
@index ||= 0
|
9
11
|
@done ||= []
|
10
12
|
|
@@ -63,17 +65,13 @@ module Jars
|
|
63
65
|
end
|
64
66
|
maven['verbose'] = (@debug || @verbose) == true
|
65
67
|
|
66
|
-
if Jars.maven_settings
|
67
|
-
maven.options['-s'] = Jars::MavenSettings.effective_settings
|
68
|
-
end
|
68
|
+
maven.options['-s'] = Jars::MavenSettings.effective_settings if Jars.maven_settings
|
69
69
|
|
70
70
|
maven['maven.repo.local'] = java.io.File.new(Jars.local_maven_repo).absolute_path.to_s
|
71
71
|
|
72
72
|
maven
|
73
73
|
end
|
74
74
|
|
75
|
-
private
|
76
|
-
|
77
75
|
def lazy_load_maven
|
78
76
|
add_gem_to_load_path('ruby-maven')
|
79
77
|
add_gem_to_load_path('ruby-maven-libs')
|
@@ -97,22 +95,22 @@ module Jars
|
|
97
95
|
def add_gem_to_load_path(name)
|
98
96
|
# if the gem is already activated => good
|
99
97
|
return if Gem.loaded_specs[name]
|
98
|
+
|
100
99
|
# just install gem if needed and add it to the load_path
|
101
100
|
# and leave activated gems as they are
|
102
101
|
req = requirement(name)
|
103
|
-
unless spec = find_spec_via_rubygems(name, req)
|
102
|
+
unless (spec = find_spec_via_rubygems(name, req))
|
104
103
|
spec = install_gem(name, req)
|
105
104
|
end
|
106
|
-
unless spec
|
107
|
-
|
108
|
-
end
|
105
|
+
raise "failed to resolve gem '#{name}' if you're using Bundler add it as a dependency" unless spec
|
106
|
+
|
109
107
|
path = File.join(spec.full_gem_path, spec.require_path)
|
110
108
|
$LOAD_PATH << path unless $LOAD_PATH.include?(path)
|
111
109
|
end
|
112
110
|
|
113
111
|
def requirement(name)
|
114
112
|
jars = Gem.loaded_specs['jar-dependencies']
|
115
|
-
dep = jars
|
113
|
+
dep = jars&.dependencies&.detect { |d| d.name == name }
|
116
114
|
dep.nil? ? Gem::Requirement.create('>0') : dep.requirement
|
117
115
|
end
|
118
116
|
|
@@ -124,10 +122,11 @@ module Jars
|
|
124
122
|
inst.install(name, req).first
|
125
123
|
rescue => e
|
126
124
|
if Jars.verbose?
|
127
|
-
warn e.inspect
|
125
|
+
warn e.inspect
|
128
126
|
warn e.backtrace.join("\n")
|
129
127
|
end
|
130
|
-
raise "there was an error installing '#{name} (#{req})'
|
128
|
+
raise "there was an error installing '#{name} (#{req})' " \
|
129
|
+
"#{@options[:domain]}. please install it manually: #{e.inspect}"
|
131
130
|
end
|
132
131
|
end
|
133
132
|
end
|
data/lib/jars/maven_settings.rb
CHANGED
@@ -1,27 +1,28 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Jars
|
3
4
|
class MavenSettings
|
4
5
|
LINE_SEPARATOR = ENV_JAVA['line.separator']
|
5
6
|
|
6
7
|
class << self
|
7
8
|
def local_settings
|
8
|
-
unless instance_variable_defined?(:@_jars_maven_local_settings_)
|
9
|
-
@_jars_maven_local_settings_ = nil
|
10
|
-
end
|
9
|
+
@_jars_maven_local_settings_ = nil unless instance_variable_defined?(:@_jars_maven_local_settings_)
|
11
10
|
if @_jars_maven_local_settings_.nil?
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
settings = Jars.absolute('settings.xml')
|
12
|
+
@_jars_maven_local_settings_ =
|
13
|
+
if settings && File.exist?(settings)
|
14
|
+
settings
|
15
|
+
else
|
16
|
+
false
|
17
|
+
end
|
15
18
|
end
|
16
19
|
@_jars_maven_local_settings_ || nil
|
17
20
|
end
|
18
21
|
|
19
22
|
def user_settings
|
20
|
-
unless instance_variable_defined?(:@_jars_maven_user_settings_)
|
21
|
-
@_jars_maven_user_settings_ = nil
|
22
|
-
end
|
23
|
+
@_jars_maven_user_settings_ = nil unless instance_variable_defined?(:@_jars_maven_user_settings_)
|
23
24
|
if @_jars_maven_user_settings_.nil?
|
24
|
-
if settings = Jars.absolute(Jars.to_prop(MAVEN_SETTINGS))
|
25
|
+
if (settings = Jars.absolute(Jars.to_prop(MAVEN_SETTINGS)))
|
25
26
|
unless File.exist?(settings)
|
26
27
|
Jars.warn { "configured ENV['#{MAVEN_SETTINGS}'] = '#{settings}' not found" }
|
27
28
|
settings = false
|
@@ -36,9 +37,7 @@ module Jars
|
|
36
37
|
end
|
37
38
|
|
38
39
|
def effective_settings
|
39
|
-
unless instance_variable_defined?(:@_jars_effective_maven_settings_)
|
40
|
-
@_jars_effective_maven_settings_ = nil
|
41
|
-
end
|
40
|
+
@_jars_effective_maven_settings_ = nil unless instance_variable_defined?(:@_jars_effective_maven_settings_)
|
42
41
|
if @_jars_effective_maven_settings_.nil?
|
43
42
|
begin
|
44
43
|
require 'rubygems/request'
|
@@ -48,12 +47,11 @@ module Jars
|
|
48
47
|
rescue
|
49
48
|
Jars.debug('ignore rubygems proxy configuration as rubygems is too old')
|
50
49
|
end
|
51
|
-
if http.nil? && https.nil?
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
end
|
50
|
+
@_jars_effective_maven_settings_ = if http.nil? && https.nil?
|
51
|
+
settings
|
52
|
+
else
|
53
|
+
setup_interpolated_settings(http, https) || settings
|
54
|
+
end
|
57
55
|
end
|
58
56
|
@_jars_effective_maven_settings_
|
59
57
|
end
|
@@ -69,18 +67,14 @@ module Jars
|
|
69
67
|
end
|
70
68
|
|
71
69
|
def settings
|
72
|
-
unless instance_variable_defined?(:@_jars_maven_settings_)
|
73
|
-
@_jars_maven_settings_ = nil
|
74
|
-
end
|
70
|
+
@_jars_maven_settings_ = nil unless instance_variable_defined?(:@_jars_maven_settings_)
|
75
71
|
local_settings || user_settings if @_jars_maven_settings_.nil?
|
76
72
|
end
|
77
73
|
|
78
74
|
def global_settings
|
79
|
-
unless instance_variable_defined?(:@_jars_maven_global_settings_)
|
80
|
-
@_jars_maven_global_settings_ = nil
|
81
|
-
end
|
75
|
+
@_jars_maven_global_settings_ = nil unless instance_variable_defined?(:@_jars_maven_global_settings_)
|
82
76
|
if @_jars_maven_global_settings_.nil?
|
83
|
-
if mvn_home = ENV['M2_HOME'] || ENV['MAVEN_HOME']
|
77
|
+
if (mvn_home = ENV['M2_HOME'] || ENV['MAVEN_HOME'])
|
84
78
|
settings = File.join(mvn_home, 'conf/settings.xml')
|
85
79
|
settings = false unless File.exist?(settings)
|
86
80
|
else
|
data/lib/jars/output_jars_pom.rb
CHANGED
@@ -1,8 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# this file is maven DSL
|
2
4
|
|
3
5
|
if ENV_JAVA['jars.quiet'] != 'true'
|
4
6
|
model.dependencies.each do |d|
|
5
|
-
puts
|
6
|
-
|
7
|
+
puts " #{d.group_id}:#{d.artifact_id}" \
|
8
|
+
"#{d.classifier ? ":#{d.classifier}" : ''}" \
|
9
|
+
":#{d.version}:#{d.scope || 'compile'}"
|
10
|
+
next if d.exclusions.empty?
|
11
|
+
|
12
|
+
puts " exclusions: #{d.exclusions.collect do |e|
|
13
|
+
"#{e.group_id}:#{e.artifact_id}"
|
14
|
+
end.join}"
|
7
15
|
end
|
8
16
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
#
|
2
4
|
# Copyright (C) 2014 Christian Meier
|
3
5
|
#
|
@@ -21,7 +23,7 @@
|
|
21
23
|
|
22
24
|
if defined?(JRUBY_VERSION) && Gem.post_install_hooks.empty?
|
23
25
|
Gem.post_install do |gem_installer|
|
24
|
-
|
26
|
+
if ENV['JARS_SKIP'] != 'true' && ENV_JAVA['jars.skip'] != 'true'
|
25
27
|
require 'jars/installer'
|
26
28
|
jars = Jars::Installer.new(gem_installer.spec)
|
27
29
|
jars.ruby_maven_install_options = gem_installer.options || {}
|
data/lib/jars/setup.rb
CHANGED
data/lib/jars/version.rb
CHANGED
data/lib/rubygems_plugin.rb
CHANGED
metadata
CHANGED
@@ -1,75 +1,49 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jar-dependencies
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- christian meier
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-01-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
requirement: !ruby/object:Gem::Requirement
|
15
|
-
requirements:
|
16
|
-
- - "~>"
|
17
|
-
- !ruby/object:Gem::Version
|
18
|
-
version: '5.3'
|
19
14
|
name: minitest
|
20
|
-
prerelease: false
|
21
|
-
type: :development
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '5.3'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
requirement: !ruby/object:Gem::Requirement
|
29
|
-
requirements:
|
30
|
-
- - ">="
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: '0'
|
33
|
-
name: pry
|
34
|
-
prerelease: false
|
35
|
-
type: :development
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
15
|
requirement: !ruby/object:Gem::Requirement
|
43
16
|
requirements:
|
44
17
|
- - "~>"
|
45
18
|
- !ruby/object:Gem::Version
|
46
|
-
version: '10
|
47
|
-
name: rake
|
48
|
-
prerelease: false
|
19
|
+
version: '5.10'
|
49
20
|
type: :development
|
21
|
+
prerelease: false
|
50
22
|
version_requirements: !ruby/object:Gem::Requirement
|
51
23
|
requirements:
|
52
24
|
- - "~>"
|
53
25
|
- !ruby/object:Gem::Version
|
54
|
-
version: '10
|
26
|
+
version: '5.10'
|
55
27
|
- !ruby/object:Gem::Dependency
|
28
|
+
name: ruby-maven
|
56
29
|
requirement: !ruby/object:Gem::Requirement
|
57
30
|
requirements:
|
58
31
|
- - "~>"
|
59
32
|
- !ruby/object:Gem::Version
|
60
|
-
version: 3.
|
61
|
-
name: ruby-maven
|
62
|
-
prerelease: false
|
33
|
+
version: '3.9'
|
63
34
|
type: :development
|
35
|
+
prerelease: false
|
64
36
|
version_requirements: !ruby/object:Gem::Requirement
|
65
37
|
requirements:
|
66
38
|
- - "~>"
|
67
39
|
- !ruby/object:Gem::Version
|
68
|
-
version: 3.
|
69
|
-
description:
|
70
|
-
|
71
|
-
|
72
|
-
|
40
|
+
version: '3.9'
|
41
|
+
description: |
|
42
|
+
manage jar dependencies for gems and keep track which jar was already
|
43
|
+
loaded using maven artifact coordinates. it warns on version conflicts and
|
44
|
+
loads only ONE jar assuming the first one is compatible to the second one
|
45
|
+
otherwise your project needs to lock down the right version by providing a
|
46
|
+
Jars.lock file.
|
73
47
|
email:
|
74
48
|
- mkristian@web.de
|
75
49
|
executables:
|
@@ -81,12 +55,11 @@ files:
|
|
81
55
|
- Mavenfile
|
82
56
|
- Rakefile
|
83
57
|
- Readme.md
|
84
|
-
-
|
58
|
+
- exe/lock_jars
|
85
59
|
- jar-dependencies.gemspec
|
86
60
|
- lib/jar-dependencies.rb
|
87
61
|
- lib/jar_dependencies.rb
|
88
62
|
- lib/jar_install_post_install_hook.rb
|
89
|
-
- lib/jar_installer.rb
|
90
63
|
- lib/jars/attach_jars_pom.rb
|
91
64
|
- lib/jars/classpath.rb
|
92
65
|
- lib/jars/gemspec_artifacts.rb
|
@@ -107,16 +80,17 @@ files:
|
|
107
80
|
homepage: https://github.com/mkristian/jar-dependencies
|
108
81
|
licenses:
|
109
82
|
- MIT
|
110
|
-
metadata:
|
83
|
+
metadata:
|
84
|
+
rubygems_mfa_required: 'true'
|
111
85
|
post_install_message: |2+
|
112
86
|
|
113
87
|
if you want to use the executable lock_jars then install ruby-maven gem before using lock_jars
|
114
88
|
|
115
|
-
$ gem install ruby-maven -v '~> 3.
|
89
|
+
$ gem install ruby-maven -v '~> 3.9'
|
116
90
|
|
117
91
|
or add it as a development dependency to your Gemfile
|
118
92
|
|
119
|
-
gem 'ruby-maven', '~> 3.
|
93
|
+
gem 'ruby-maven', '~> 3.9'
|
120
94
|
|
121
95
|
rdoc_options: []
|
122
96
|
require_paths:
|
@@ -125,15 +99,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
125
99
|
requirements:
|
126
100
|
- - ">="
|
127
101
|
- !ruby/object:Gem::Version
|
128
|
-
version: '
|
102
|
+
version: '2.6'
|
129
103
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
130
104
|
requirements:
|
131
105
|
- - ">="
|
132
106
|
- !ruby/object:Gem::Version
|
133
107
|
version: '0'
|
134
108
|
requirements: []
|
135
|
-
|
136
|
-
rubygems_version: 2.6.14.1
|
109
|
+
rubygems_version: 3.5.23
|
137
110
|
signing_key:
|
138
111
|
specification_version: 4
|
139
112
|
summary: manage jar dependencies for gems
|
data/lib/jar_installer.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require 'jars/installer'
|