Class: Ruby2Jar::JarTask

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby2jar/jartask.rb

Overview

Rake task to build JAR.

Example:

require "ruby2jar"

PKG_NAME = "program"
PKG_VERSION = "0.1"

Ruby2Jar::Rake::JarTask.new do |jar|
  jar.files = FileList["lib/**/*", "bin/*"]
  jar.main = "bin/program"
  jar.name = PKG_NAME
  jar.version = PKG_VERSION
  jar.add_dependency "rspec"
end

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(task = :jar) {|_self| ... } ⇒ JarTask

Create an RDoc task named task (default task name is jar)

Yields:

  • (_self)

Yield Parameters:



44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/ruby2jar/jartask.rb', line 44

def initialize(task = :jar)
  @task = task
  @builder = Builder.new
  Console.new(@builder)
  yield self if block_given?
  if @builder.jar.nil? and not @name.nil?
    if not @version.nil?
      @builder.jar = "pkg/#{@name}-#{@version}.jar"
    else
      @builder.jar = "pkg/#{@name}.jar"
    end
  end
  define
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args) ⇒ Object

Set parameters of JAR builder



77
78
79
80
81
82
83
# File 'lib/ruby2jar/jartask.rb', line 77

def method_missing(method, *args)
  if not @builder.method(method).nil?
    @builder.method(method).call(*args)
  else
    super(method, *args)
  end
end

Instance Attribute Details

#nameObject

Name of JAR package



38
39
40
# File 'lib/ruby2jar/jartask.rb', line 38

def name
  @name
end

#versionObject

Version of application to use in JAR name



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

def version
  @version
end

Instance Method Details

#defineObject

Create the tasks



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/ruby2jar/jartask.rb', line 60

def define
  task :package => [@task]
  desc "Build the JAR file #{@builder.jar}"
  task @task do
    @builder.build
  end

  task :clobber => ["clobber_#{@task}"]
  desc "Remove JAR file #{@builder.jar}"
  task "clobber_#{@task}" do
    File.delete @builder.jar if File.exists? @builder.jar
    pkg = File.dirname(@builder.jar)
    Dir.delete pkg if Dir.entries(pkg)
  end
end