class RJack::TarPit::BaseStrategy
Base class for Rake task generation.
Constants
- MVN_STATE_FILE
File touched to record the time of last successful 'mvn package' run.
- MVN_STATE_FILE_INSTALL
Attributes
spec[R]
The augmented Gem::Specification as constructed.
Public Class Methods
new( spec )
click to toggle source
Calls superclass method
RJack::TarPit::GitTaskDefiner.new
# File lib/rjack-tarpit/base_strategy.rb, line 49 def initialize( spec ) @defines = [ :define_maven_tasks ] super() @spec = spec @install_request = Rake.application.top_level_tasks.include?( "install" ) end
Public Instance Methods
add_define_hook( sym )
click to toggle source
# File lib/rjack-tarpit/base_strategy.rb, line 58 def add_define_hook( sym ) @defines << sym end
define_manifest_task()
click to toggle source
Define task for dynamically generating Manifest.txt
# File lib/rjack-tarpit/base_strategy.rb, line 83 def define_manifest_task if File.exist?( 'Manifest.static' ) file 'Manifest.txt' => [ 'Manifest.static' ] end gf = clean_list( spec.generated_files ).sort [ :gem, :test ].each { |t| task t => gf } unless gf.empty? task :gen_clean do rm_f gf end task :clean => :gen_clean end desc "Force update of Manifest.txt" task :manifest do spec.generate_manifest end mtask = file 'Manifest.txt' do spec.generate_manifest end mtask end
define_maven_package_task()
click to toggle source
Define a file task tracking calls to “mvn package”
# File lib/rjack-tarpit/base_strategy.rb, line 117 def define_maven_package_task [ MVN_STATE_FILE, MVN_STATE_FILE_INSTALL ].each do |sf| file sf => maven_dependencies do run_maven end end task :install => MVN_STATE_FILE_INSTALL end
define_maven_tasks()
click to toggle source
Define maven tasks based on spec strategy and other details.
# File lib/rjack-tarpit/base_strategy.rb, line 68 def define_maven_tasks from_assembly = ( spec.maven_strategy == :jars_from_assembly ) do_maven = from_assembly || spec.jars.size > 0 define_maven_package_task if do_maven if do_maven || spec.generated_files define_manifest_task task( :manifest => [ MVN_STATE_FILE ] ) if from_assembly end define_post_maven_tasks if do_maven end
define_post_maven_tasks()
click to toggle source
Define file tasks for all jar symlinks and other misc. maven associated tasks like :mvn_clean.
# File lib/rjack-tarpit/base_strategy.rb, line 145 def define_post_maven_tasks jfrom = spec.jar_from spec.jars.each do |jar| from = File.join( jfrom, jar ) dest = File.join( spec.jar_dest, jar ) file from => [ MVN_STATE_FILE ] file dest => [ from ] do ln( from, dest, :force => true ) end [ :gem, :test ].each { |t| task t => [ dest ] } end task :mvn_clean do spec.remove_dest_jars rm_rf 'target' if File.directory?( 'target' ) end task :clean => :mvn_clean end
define_tasks()
click to toggle source
Define rake tasks (given settings)
# File lib/rjack-tarpit/base_strategy.rb, line 63 def define_tasks @defines.each { |sym| send( sym ) } end
maven_dependencies()
click to toggle source
Dependencies on “mvn package” including pom.xml, any assembly.xml, all files under the “src” directory.
# File lib/rjack-tarpit/base_strategy.rb, line 166 def maven_dependencies deps = [ 'pom.xml' ] deps << 'assembly.xml' if File.exist?( 'assembly.xml' ) deps += FileList[ "src/**/*" ].exclude { |f| ! File.file?( f ) } deps end
run_maven()
click to toggle source
Run Maven mvn package or install and touch state files.
# File lib/rjack-tarpit/base_strategy.rb, line 128 def run_maven # Delay till now, in case we were not running on jvm require 'rjack-maven' target = @install_request ? 'install' : 'package' status = RJack::Maven.launch( [ target ] ) unless status == 0 raise "TARPIT: Maven #{target} failed (exit code: #{status})" end touch( MVN_STATE_FILE ) touch( MVN_STATE_FILE_INSTALL ) if @install_request end