Sha256: 430976435fe30cde0f41ed5b439f19a68b2aa73ad9ea19d54f723ed8884426d6

Contents?: true

Size: 1.58 KB

Versions: 15

Compression:

Stored size: 1.58 KB

Contents

#--
# Copyright (c) 2010-2012 Engine Yard, Inc.
# Copyright (c) 2007-2009 Sun Microsystems, Inc.
# This source code is available under the MIT license.
# See the file LICENSE.txt for details.
#++

require 'stringio'
require 'ostruct'

module Warbler
  module Traits
    # The Jar trait sets up the archive layout for an executable jar
    # project, and adds the JRuby jar files and a JarMain class to the
    # archive.
    class Jar
      include Trait

      def self.detect?
        !War.detect?
      end

      def before_configure
        config.gem_path      = '/'
        config.pathmaps      = default_pathmaps
        config.java_libs     = default_jar_files
        config.manifest_file = 'MANIFEST.MF' if File.exist?('MANIFEST.MF')
        config.init_contents << "#{config.warbler_templates}/jar.erb"
      end

      def after_configure
        config.init_contents << StringIO.new("require 'rubygems'\n")
      end

      def update_archive(jar)
        unless config.manifest_file
          manifest = Warbler::Jar::DEFAULT_MANIFEST.chomp + "Main-Class: JarMain\n"
          jar.files['META-INF/MANIFEST.MF'] = StringIO.new(manifest)
        end
        jar.files['JarMain.class'] = jar.entry_in_jar(WARBLER_JAR, "JarMain.class")
      end

      def default_pathmaps
        p = OpenStruct.new
        p.java_libs    = ["META-INF/lib/%f"]
        p.java_classes = ["%p"]
        p.application  = ["#{config.jar_name}/%p"]
        p.gemspecs     = ["specifications/%f"]
        p.gems         = ["gems/%p"]
        p
      end

      def default_jar_files
        jruby_jars
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
warbler-1.4.10 lib/warbler/traits/jar.rb
warbler-2.0.1 lib/warbler/traits/jar.rb
warbler-2.0.0 lib/warbler/traits/jar.rb
warbler-2.0.0.rc3 lib/warbler/traits/jar.rb
warbler-2.0.0.rc2 lib/warbler/traits/jar.rb
warbler-2.0.0.rc1 lib/warbler/traits/jar.rb
warbler-2.0.0.pre3 lib/warbler/traits/jar.rb
warbler-2.0.0.pre2 lib/warbler/traits/jar.rb
warbler-1.4.9 lib/warbler/traits/jar.rb
warbler-1.4.8 lib/warbler/traits/jar.rb
warbler-2.0.0.pre1 lib/warbler/traits/jar.rb
warbler-1.4.7 lib/warbler/traits/jar.rb
warbler-1.4.6 lib/warbler/traits/jar.rb
warbler-1.4.5 lib/warbler/traits/jar.rb
warbler-1.4.4 lib/warbler/traits/jar.rb