module RubyMaven

Constants

POLYGLOT_VERSION

Public Class Methods

dir() click to toggle source
# File lib/ruby_maven.rb, line 52
def self.dir
  @dir ||= File.expand_path( '../../', __FILE__ )
end
exec( *args ) click to toggle source
# File lib/ruby_maven.rb, line 27
def self.exec( *args )
  if File.exist?('settings.xml') and not args.member?('-s') and not args.member?('--settings')
    args << '-s'
    args << 'settings.xml'
  end
  if args.member?('-version') or args.member?('--version') or args.member?('-v')
    warn "Polyglot Maven Extension #{version}"
    launch( '--version' )
  elsif defined? Bundler
    # it can be switching from ruby to jruby with invoking maven
    # just keep it clean
    if Bundler.respond_to?(:with_unbundled_env)
      Bundler.with_unbundled_env do
        launch( *args )
      end
    else
      Bundler.with_clean_env do
        launch( *args )
      end
    end
  else
    launch( *args )
  end
end
launch( *args ) click to toggle source
# File lib/ruby_maven.rb, line 67
def self.launch( *args )
  old_maven_home = ENV['M2_HOME']
  ENV['M2_HOME'] = Maven.home

  extensions = File.join( '.mvn/extensions.xml' )
  if has_extensions = File.exists?( extensions )
    # tests need copy instead of move
    FileUtils.cp( extensions, extensions + ".orig" )
  else
    FileUtils.mkdir_p( '.mvn' )
  end
  FileUtils.cp( File.join( dir, extensions ), extensions ) rescue nil

  # setup version
  self.version

  Maven.exec( *args )

ensure
  ENV['M2_HOME'] = old_maven_home
  
  FileUtils.rm_f( extensions )
  if has_extensions
    FileUtils.move( extensions + '.orig', extensions )
  else
    dir = File.dirname( extensions )
    # delete empty .mvn directory
    FileUtils.rm_rf( dir ) if Dir[File.join(dir, '*')].size == 0
  end
end
version() click to toggle source
# File lib/ruby_maven.rb, line 56
def self.version
  polyglot_version = begin
                       xml = File.read( File.join( dir, '.mvn/extensions.xml' ) )
                       xml.sub( /.*<version>/m, '' ).sub(/<\/version>.*/m, '' )
                     rescue Errno::ENOENT => e
                       nil
                     end
  POLYGLOT_VERSION.replace(polyglot_version) if polyglot_version
  POLYGLOT_VERSION
end