diff --git a/rakelib/maven.rake b/rakelib/maven.rake index 8470686ad3d..b82271cb753 100644 --- a/rakelib/maven.rake +++ b/rakelib/maven.rake @@ -1,3 +1,4 @@ +#-*- mode: ruby -*- require 'fileutils' @@ -9,22 +10,41 @@ def maven_retrieve_pom_version raise Errno::ENOENT.new "Cannot find project pom.xml" end +def maven + unless @__maven__ + require 'maven/ruby/maven' + @__maven__ = Maven::Ruby::Maven.new + @__maven__.embedded = true + end + @__maven__ +rescue LoadError => e + warn 'make sure you have ruby-maven gem installed' + raise e +end + namespace :maven do + + desc "Dump pom.xml files" + task :dump_poms do + maven.validate( '-Pall' ) + end + + desc "Set new version" + task :set_version => [:do_set_version, :dump_poms ] + + task :do_set_version do + version = readline + version.strip! + File.open( '../VERSION', 'w' ) { |f| f.print version } + end + desc "Prepare for the release" - task :prepare_release do - system "mvn versions:set" - system "mvn clean install -Pall" - tree = File.expand_path(File.join(File.dirname(__FILE__), '..', 'target', 'tree.txt') ) - FileUtils.mkdir_p( File.dirname( tree ) ) - FileUtils.rm_f( tree ) - system "mvn dependency:tree -Doutput=#{tree} -DappendOutput" - deps = File.read( tree ) - raise "found SNAPSHOTS #{deps}" if deps.match 'SNAPSHOT' + task :prepare_release => :do_set_version do + maven.exec( :clean, :install, '-Prelease' ) end desc "Deploy release and bump version" task :deploy_release do system "mvn clean deploy -Psonatype-oss-release,release" - system "mvn versions:set" end end