/
jar.rb
59 lines (51 loc) · 1.66 KB
/
jar.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#--
# 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
require 'jruby-jars'
FileList[JRubyJars.core_jar_path, JRubyJars.stdlib_jar_path]
end
end
end
end