|
20 | 20 | # |
21 | 21 | require 'maven' |
22 | 22 | require 'maven/ruby/maven' |
| 23 | +require 'maven/ruby/version' |
23 | 24 |
|
24 | 25 | module RubyMaven |
25 | | - POLYGLOT_VERSION = "0.1.15" |
26 | 26 |
|
27 | 27 | def self.exec( *args ) |
28 | 28 | if File.exist?('settings.xml') and not args.member?('-s') and not args.member?('--settings') |
29 | 29 | args << '-s' |
30 | 30 | args << 'settings.xml' |
31 | 31 | end |
32 | 32 | if args.member?('-version') or args.member?('--version') or args.member?('-v') |
33 | | - warn "Polyglot Maven Extension #{version}" |
34 | 33 | launch( '--version' ) |
35 | 34 | elsif defined? Bundler |
36 | 35 | # it can be switching from ruby to jruby with invoking maven |
@@ -58,40 +57,37 @@ def self.version |
58 | 57 | xml = File.read( File.join( dir, '.mvn/extensions.xml' ) ) |
59 | 58 | xml.sub( /.*<version>/m, '' ).sub(/<\/version>.*/m, '' ) |
60 | 59 | rescue Errno::ENOENT => e |
61 | | - nil |
| 60 | + Maven::Ruby::POLYGLOT_VERSION |
62 | 61 | end |
63 | | - POLYGLOT_VERSION.replace(polyglot_version) if polyglot_version |
64 | | - POLYGLOT_VERSION |
65 | 62 | end |
66 | 63 |
|
67 | 64 | def self.launch( *args ) |
| 65 | + if args.member?('--version') or args.member?('--show-version') |
| 66 | + warn "Polyglot Maven Extension #{Maven::Ruby::POLYGLOT_VERSION} via ruby-maven #{Maven::Ruby::VERSION}" |
| 67 | + end |
68 | 68 | old_maven_home = ENV['M2_HOME'] |
69 | 69 | ENV['M2_HOME'] = Maven.home |
70 | | - |
71 | | - extensions = File.join( '.mvn/extensions.xml' ) |
72 | | - if has_extensions = File.exist?( extensions ) |
73 | | - # tests need copy instead of move |
74 | | - FileUtils.cp( extensions, extensions + ".orig" ) |
75 | | - else |
76 | | - FileUtils.mkdir_p( '.mvn' ) |
| 70 | + ext_dir = File.join(Maven.lib, 'ext') |
| 71 | + FileUtils.mkdir_p(ext_dir) |
| 72 | + local_dir = File.join(__dir__, 'polyglot_jars') |
| 73 | + Dir.new(local_dir).select do |file| |
| 74 | + file =~ /.*\.jar$/ |
| 75 | + end.each do |jar| |
| 76 | + source = File.join(local_dir, jar) |
| 77 | + if jar =~ /polyglot-.*-#{Maven::Ruby::POLYGLOT_VERSION}.jar/ |
| 78 | + # ruby maven defines the polyglot version and this jar sets up its classpath |
| 79 | + # i.e. on upgrade or downgrade the right version will be picked |
| 80 | + FileUtils.cp(source, File.join(ext_dir, jar.sub(/-[0-9.]*(-SNAPSHOT)?.jar$/, '.jar'))) |
| 81 | + elsif not File.exists?(File.join(ext_dir, jar)) and not jar =~ /jruby-(core|stdlib).*/ |
| 82 | + # jar files are immutable as they carry the version |
| 83 | + warn jar |
| 84 | + FileUtils.cp(source, File.join(ext_dir, jar.sub(/-9.4.5.0/, ''))) |
| 85 | + end |
77 | 86 | end |
78 | | - FileUtils.cp( File.join( dir, extensions ), extensions ) rescue nil |
79 | | - |
80 | | - # setup version |
81 | | - self.version |
82 | 87 |
|
83 | 88 | Maven.exec( *args ) |
84 | 89 |
|
85 | 90 | ensure |
86 | 91 | ENV['M2_HOME'] = old_maven_home |
87 | | - |
88 | | - FileUtils.rm_f( extensions ) |
89 | | - if has_extensions |
90 | | - FileUtils.move( extensions + '.orig', extensions ) |
91 | | - else |
92 | | - dir = File.dirname( extensions ) |
93 | | - # delete empty .mvn directory |
94 | | - FileUtils.rm_rf( dir ) if Dir[File.join(dir, '*')].size == 0 |
95 | | - end |
96 | 92 | end |
97 | 93 | end |
0 commit comments