Module: RubyMaven

Defined in:
lib/ruby_maven.rb

Constant Summary collapse

POLYGLOT_VERSION =
begin
  xml = File.read( File.join( dir, '.mvn/extensions.xml' ) )
  xml.sub( /.*<version>/m, '' ).sub(/<\/version>.*/m, '' )
rescue Errno::ENOENT => e
 '0.1.11'
end

Class Method Summary collapse

Class Method Details

.dirObject



41
42
43
# File 'lib/ruby_maven.rb', line 41

def self.dir
  @dir ||= File.expand_path( '../../', __FILE__ )
end

.exec(*args) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/ruby_maven.rb', line 26

def self.exec( *args )
  if args.member?('-version') or args.member?('--version') or args.member?('-v')
    puts "Polyglot Maven Extension #{POLYGLOT_VERSION}\n"
    launch( '--version' )
  elsif defined? Bundler
    # it can be switching from ruby to jruby with invoking maven
    # just keep it clean
    Bundler.with_clean_env do
      launch( *args )
    end
  else
    launch( *args )
  end
end

.launch(*args) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/ruby_maven.rb', line 45

def self.launch( *args )
  old_maven_home = ENV['M2_HOME']
  ENV['M2_HOME'] = Maven.home

  extensions = File.join( '.mvn/extensions.xml' )
  unless has_extensions = File.exists?( extensions )
    FileUtils.mkdir_p( '.mvn' )
    FileUtils.cp( File.join( dir, extensions), extensions )
  end
  Maven.exec( *args )

ensure
  ENV['M2_HOME'] = old_maven_home
  unless has_extensions
    FileUtils.rm_f( extensions )
    dir = File.dirname( extensions )
    # delete empty .mvn directory
    FileUtils.rm_rf( dir ) if Dir[File.join(dir, '*')].size == 0
  end
end