lib/ruby/ruby_maven.rb in ruby-maven-3.0.4.0.29.0 vs lib/ruby/ruby_maven.rb in ruby-maven-3.0.4.1

- old
+ new

@@ -1,227 +2 @@ -require 'fileutils' -require 'maven/tools/rails_project' -require 'java' if defined? JRUBY_VERSION - -module Maven - class RubyMaven - - # make the command line for the goals of the jruby-maven-plugins nicer - PLUGINS = { - :rake => [:rake], - :jruby => [:jruby, :compile], - :gem => [:package, :install, :push, :exec, :pom, :initialize, :irb], - :rails3 => [:new, :generate, :rake, :server, :console, :dbconsole, :pom, :initialize], - :cucumber => [:test], - :rspec => [:test], - :runit => [:test], - :mini => [:test,:spec], - :bundler => [:install, :update] - } - ALIASES = { - :ruby => :jruby, - :spec => :rspec, - :rails => :rails3, - :bundle => :bundler - } - - def initialize - @maven_home = File.expand_path(File.join(File.dirname(__FILE__),'..','..')) - end - - def launch_jruby(args) - classpath_array.each do |path| - require path - end - - java.lang.System.setProperty("classworlds.conf", - File.join(@maven_home, 'bin', "m2.conf")) - - java.lang.System.setProperty("maven.home", @maven_home) - - org.codehaus.plexus.classworlds.launcher.Launcher.main(args) - end - - def classpath_array - Dir.glob(File.join(@maven_home, "boot", "*jar")) + - Dir.glob(File.join(@maven_home, "ext", "ruby-tools*jar")) - end - - def launch_java(*args) - system "java -cp #{classpath_array.join(':')} -Dmaven.home=#{File.expand_path(@maven_home)} -Dclassworlds.conf=#{File.expand_path(File.join(@maven_home, 'bin', 'm2.conf'))} org.codehaus.plexus.classworlds.launcher.Launcher #{args.join ' '}" - end - - def prepare(args) - if args.size > 0 - name = args[0].to_sym - name = ALIASES[name] || name - if PLUGINS.member?(name) - start = 1 - if args.size > 1 - if PLUGINS[name].member? args[1].to_sym - goal = args[1].to_sym - start = 2 - else - goal = PLUGINS[name][0] - end - else - goal = PLUGINS[name][0] - end - # determine the version and delete from args if given - version = args.detect do |a| - a =~ /^-Dplugin.version=/ - end - version ||= options['-Dplugin.version'] - - if version - args.delete(version) - version = ":" + version.sub(/^-Dplugin.version=/, '') - end - aa = if index = args.index("--") - args[(index + 1)..-1] - else - [] - end - ruby_args = (args[start, (index || 1000) - start] || []).join(' ') - - aa << "de.saumya.mojo:#{name}-maven-plugin#{version}:#{goal}" - aa << "-Dargs=\"#{ruby_args}\"" if ruby_args.size > 0 - args.replace(aa) - else - args.delete("--") - end - end - args - end - - def log(args) - log = File.join('log', 'rmvn.log') - if File.exists? File.dirname(log) - File.open(log, 'a') do |f| - f.puts "#{$0.sub(/.*\//, '')} #{args.join ' '}" - end - end - end - - def maybe_print_help(args) - if args.size == 0 || args[0] == "--help" - puts "usage: rmvn [<plugin-name> [<args>] [-- <maven-options>]] | [<maven-goal>|<maven-phase> <maven-options>] | --help" - PLUGINS.each do |name, goals| - puts - print "plugin #{name}" - print " - alias: #{ALIASES.invert[name]}" if ALIASES.invert[name] - puts - if goals.size > 1 - print "\tgoals : #{goals.join(',')}" - puts - end - print "\tdefault goal: #{goals[0]}" - puts - end - puts - ["--help"] - else - args - end - end - - def options - @options ||= {} - end - - def options_string - options_array.join ' ' - end - - def options_array - options.collect do |k,v| - if k =~ /^-D/ - v = "=#{v}" unless v.nil? - else - v = " #{v}" unless v.nil? - end - "#{k}#{v}" - end - end - - def command_line(args) - args = prepare(args) - args = maybe_print_help(args) - args - end - - def new_rails_project - Maven::Tools::RailsProject.new - end - - def generate_pom(*args) - unless args.member?("-f") || args.member?("--file") - gemfiles = Dir["*Gemfile"] - gemfiles.delete_if {|g| g =~ /.pom/} - if gemfiles.size > 0 - proj = - if File.exists? File.join( 'config', 'application.rb' ) - new_rails_project - else - Maven::Tools::GemProject.new - end - filename = gemfiles[0] - proj.load_gemfile(filename) - else - gemspecs = Dir["*.gemspec"] - gemspecs.delete_if {|g| g =~ /.pom/} - if gemspecs.size > 0 - proj = Maven::Tools::GemProject.new - filename = gemspecs[0] - proj.load_gemspec(filename) - end - end - if filename - proj.load_jarfile(File.join(File.dirname(filename), 'Jarfile')) - proj.load_gemfile(File.join(File.dirname(filename), 'Mavenfile')) - proj.add_defaults - #target = File.join(File.dirname(filename), 'target') - #FileUtils.mkdir_p target - pom = ".pom.xml" - File.open(pom, 'w') do |f| - f.puts proj.to_xml - end - args << '-f' - args << pom - end - end - args - end - - def exec(*args) - log(args) - a = command_line(args.dup.flatten) - verbose = options.delete('--verbose') - no_pom = options.delete('--no-pom') - a << options_array - a.flatten! - a = generate_pom(*a) unless no_pom - puts "mvn #{a.join(' ')}" if verbose - if defined? JRUBY_VERSION - # TODO use a setup like maven_gemify from jruby to launch maven - launch_java(a) - else - launch_java(a) - end - end - - def exec_in(launchdirectory, *args) - succeeded = nil - FileUtils.cd(launchdirectory) do - succeeded = exec(args) - end - succeeded - end - - def dump_pom(force = false, file = 'pom.xml') - if force || !File.exists?(file) - generate_pom - FileUtils.cp(".pom.xml", file) - end - end - end -end +require 'maven/ruby/maven'