jbundler 0.5.3 → 0.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +4 -2
- data/Gemfile.lock +10 -18
- data/lib/jbundler/aether.rb +8 -4
- data/lib/jbundler/classpath_file.rb +1 -1
- data/lib/jbundler/cli.rb +25 -4
- data/lib/jbundler/config.rb +13 -5
- data/lib/jbundler/configurator.rb +23 -0
- data/lib/jbundler/executable.rb +13 -14
- data/lib/jbundler/executable_pom.rb +94 -133
- data/lib/jbundler/gemfile_lock.rb +1 -1
- data/lib/jbundler/lazy.rb +2 -2
- data/lib/jbundler/pom.rb +1 -1
- data/lib/jbundler/tree.rb +14 -32
- data/lib/jbundler/tree_pom.rb +19 -0
- data/lib/jbundler/vendor.rb +36 -0
- data/lib/jbundler.jar +0 -0
- data/lib/jbundler.rb +17 -7
- data/spec/config_spec.rb +153 -0
- data/spec/vendor_spec.rb +60 -0
- metadata +13 -31
- data/lib/jbundler/maven.rb +0 -27
- data/spec/executable_compile/Gemfile +0 -3
- data/spec/executable_compile/Gemfile.lock +0 -18
- data/spec/executable_compile/Jarfile +0 -1
- data/spec/executable_compile/Jarfile.lock +0 -2
- data/spec/executable_compile/start.rb +0 -1
- data/spec/executable_no_compile/Gemfile +0 -3
- data/spec/executable_no_compile/Gemfile.lock +0 -18
- data/spec/executable_no_compile/Jarfile +0 -1
- data/spec/executable_no_compile/Jarfile.lock +0 -2
- data/spec/executable_no_compile/start.rb +0 -1
- data/spec/executable_only_java_sources/Gemfile +0 -3
- data/spec/executable_only_java_sources/Gemfile.lock +0 -18
- data/spec/executable_only_java_sources/Jarfile +0 -3
- data/spec/executable_only_java_sources/Jarfile.lock +0 -2
- data/spec/executable_only_java_sources/start.rb +0 -6
- data/spec/executable_spec.rb +0 -43
- data/spec/tree/Gemfile +0 -3
- data/spec/tree/Jarfile +0 -5
- data/spec/tree/Jarfile.lock +0 -2
- data/spec/tree/myfirst.jar +0 -0
- data/spec/tree/ref.txt +0 -27
- data/spec/tree_spec.rb +0 -33
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,32 +1,24 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
jbundler (0.5.
|
4
|
+
jbundler (0.5.4)
|
5
5
|
bundler (~> 1.2)
|
6
|
-
ruby-maven (>= 3.1.
|
6
|
+
ruby-maven (>= 3.1.1.0.1, < 3.1.2)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
-
backports (3.3.
|
12
|
-
|
13
|
-
|
14
|
-
maven-tools (0.
|
11
|
+
backports (3.3.5)
|
12
|
+
copyright-header (1.0.8)
|
13
|
+
descendants_tracker (0.0.3)
|
14
|
+
maven-tools (0.34.2)
|
15
15
|
virtus (~> 0.5)
|
16
16
|
minitest (4.7.5)
|
17
17
|
rake (10.1.0)
|
18
|
-
|
19
|
-
rspec-core (~> 2.14.0)
|
20
|
-
rspec-expectations (~> 2.14.0)
|
21
|
-
rspec-mocks (~> 2.14.0)
|
22
|
-
rspec-core (2.14.5)
|
23
|
-
rspec-expectations (2.14.2)
|
24
|
-
diff-lcs (>= 1.1.3, < 2.0)
|
25
|
-
rspec-mocks (2.14.3)
|
26
|
-
ruby-maven (3.1.0.0.1)
|
18
|
+
ruby-maven (3.1.1.0.1)
|
27
19
|
maven-tools (~> 0.33)
|
28
|
-
ruby-maven-libs (= 3.1.
|
29
|
-
ruby-maven-libs (3.1.
|
20
|
+
ruby-maven-libs (= 3.1.1)
|
21
|
+
ruby-maven-libs (3.1.1)
|
30
22
|
thor (0.15.4)
|
31
23
|
virtus (0.5.5)
|
32
24
|
backports (~> 3.3)
|
@@ -37,8 +29,8 @@ PLATFORMS
|
|
37
29
|
ruby
|
38
30
|
|
39
31
|
DEPENDENCIES
|
32
|
+
copyright-header (= 1.0.8)
|
40
33
|
jbundler!
|
41
34
|
minitest (~> 4.0)
|
42
35
|
rake (~> 10.0)
|
43
|
-
rspec (< 3.0)
|
44
36
|
thor (> 0.14.0, < 0.16.0)
|
data/lib/jbundler/aether.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# Copyright (C) 2013
|
2
|
+
# Copyright (C) 2013 Christian Meier
|
3
3
|
#
|
4
4
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
5
5
|
# this software and associated documentation files (the "Software"), to deal in
|
@@ -53,9 +53,13 @@ module JBundler
|
|
53
53
|
@aether = Aether.new( config.verbose )
|
54
54
|
@aether.add_proxy( config.proxy ) if config.proxy
|
55
55
|
@aether.add_mirror( config.mirror ) if config.mirror
|
56
|
-
@aether.offline = config.offline
|
57
|
-
|
58
|
-
|
56
|
+
@aether.offline = config.offline
|
57
|
+
if config.settings
|
58
|
+
@aether.user_settings = java.io.File.new( config.settings )
|
59
|
+
end
|
60
|
+
if config.local_repository
|
61
|
+
@aether.local_repository = java.io.File.new(config.local_repository)
|
62
|
+
end
|
59
63
|
rescue NativeException => e
|
60
64
|
e.cause.print_stack_trace
|
61
65
|
raise e
|
data/lib/jbundler/cli.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# Copyright (C) 2013
|
2
|
+
# Copyright (C) 2013 Christian Meier
|
3
3
|
#
|
4
4
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
5
5
|
# this software and associated documentation files (the "Software"), to deal in
|
@@ -32,8 +32,15 @@ module JBundler
|
|
32
32
|
def do_show
|
33
33
|
require 'java'
|
34
34
|
require 'jbundler/classpath_file'
|
35
|
-
|
36
|
-
|
35
|
+
require 'jbundler/vendor'
|
36
|
+
classpath_file = JBundler::ClasspathFile.new( config.classpath_file )
|
37
|
+
vendor = JBundler::Vendor.new( config.vendor_dir )
|
38
|
+
if vendor.vendored?
|
39
|
+
puts "JBundler classpath:"
|
40
|
+
vendor.require_jars.each do |path|
|
41
|
+
puts " * #{path}"
|
42
|
+
end
|
43
|
+
elsif classpath_file.exists?
|
37
44
|
classpath_file.require_classpath unless defined? JBUNDLER_CLASSPATH
|
38
45
|
puts "JBundler classpath:"
|
39
46
|
JBUNDLER_CLASSPATH.each do |path|
|
@@ -52,7 +59,7 @@ module JBundler
|
|
52
59
|
end
|
53
60
|
|
54
61
|
desc 'executable', 'create an executable jar with a given bootstrap.rb file\nLIMITATION: only for jruby 1.6.x and newer'
|
55
|
-
method_option :bootstrap, :type => :string, :aliases => '-b'
|
62
|
+
method_option :bootstrap, :type => :string, :aliases => '-b', :required => true, :desc => 'file which will be executed when the jar gets executed'
|
56
63
|
method_option :compile, :type => :boolean, :aliases => '-c', :default => false, :desc => 'compile the ruby files from the lib directory'
|
57
64
|
method_option :verbose, :type => :boolean, :aliases => '-v', :default => false, :desc => 'more output'
|
58
65
|
method_option :groups, :type => :array, :aliases => '-g', :desc => 'bundler groups to use for determine the gems to include in the jar file'
|
@@ -67,8 +74,22 @@ module JBundler
|
|
67
74
|
end
|
68
75
|
|
69
76
|
desc 'install', "first `bundle install` is called and then the jar dependencies will be installed. for more details see `bundle help install`, jbundler will ignore all options. the install command is also the default when no command is given."
|
77
|
+
method_option :deployment, :type => :boolean, :default => false, :desc => "copy the jars into the vendor/jars directory (or as configured). these vendored jars have preference before the classpath jars !"
|
78
|
+
method_option :no_deployment, :type => :boolean, :default => false, :desc => 'clears the vendored jars'
|
70
79
|
def install
|
71
80
|
require 'jbundler'
|
81
|
+
if options[ :no_deployment ]
|
82
|
+
vendor = JBundler::Vendor.new( config.vendor_dir )
|
83
|
+
vendor.clear
|
84
|
+
end
|
85
|
+
if options[ :deployment ]
|
86
|
+
vendor = JBundler::Vendor.new( config.vendor_dir )
|
87
|
+
if vendor.vendored?
|
88
|
+
raise "already vendored. please 'jbundle install --no-deployment before."
|
89
|
+
else
|
90
|
+
vendor.setup( JBundler::ClasspathFile.new( config.classpath_file ) )
|
91
|
+
end
|
92
|
+
end
|
72
93
|
do_show
|
73
94
|
puts 'Your jbundle is complete! Use `jbundle show` to see where the bundled jars are installed.'
|
74
95
|
end
|
data/lib/jbundler/config.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# Copyright (C) 2013
|
2
|
+
# Copyright (C) 2013 Christian Meier
|
3
3
|
#
|
4
4
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
5
5
|
# this software and associated documentation files (the "Software"), to deal in
|
@@ -25,23 +25,27 @@ module JBundler
|
|
25
25
|
# allow yaml config in $HOME/.jbundlerrc and $PWD/.jbundlerrc
|
26
26
|
class Config
|
27
27
|
|
28
|
-
attr_accessor :verbose, :local_repository, :jarfile, :gemfile, :skip, :settings, :offline, :work_dir
|
28
|
+
attr_accessor :verbose, :local_repository, :jarfile, :gemfile, :skip, :settings, :offline, :work_dir, :vendor_dir
|
29
29
|
|
30
30
|
def initialize
|
31
31
|
file = '.jbundlerrc'
|
32
32
|
homefile = File.join(ENV['HOME'], file)
|
33
33
|
home_config = YAML.load_file(homefile) if File.exists?(homefile)
|
34
34
|
pwd_config = YAML.load_file(file) if File.exists?(file)
|
35
|
+
File.expand_path( file )
|
35
36
|
@config = (home_config || {}).merge(pwd_config || {})
|
36
37
|
end
|
37
38
|
|
38
39
|
if defined? JRUBY_VERSION
|
39
40
|
def jbundler_env(key)
|
40
|
-
|
41
|
+
java.lang.System.getProperty(key.downcase.gsub(/_/, '.')) ||
|
42
|
+
ENV[key.upcase.gsub(/[.]/, '_')] ||
|
43
|
+
@config[key.downcase.sub(/^j?bundle_/, '').sub(/[.]/, '_')]
|
41
44
|
end
|
42
45
|
else
|
43
46
|
def jbundler_env(key)
|
44
|
-
|
47
|
+
ENV[key.upcase.gsub(/[.]/, '_')] ||
|
48
|
+
@config[key.downcase.sub(/^j?bundler/, '').sub(/[.]/, '_')]
|
45
49
|
end
|
46
50
|
end
|
47
51
|
private :jbundler_env
|
@@ -79,7 +83,7 @@ module JBundler
|
|
79
83
|
end
|
80
84
|
|
81
85
|
def classpath_file
|
82
|
-
'.jbundler/classpath.rb'
|
86
|
+
jbundler_env('JBUNDLE_CLASSPATH_FILE') || '.jbundler/classpath.rb'
|
83
87
|
end
|
84
88
|
|
85
89
|
def local_repository
|
@@ -118,5 +122,9 @@ module JBundler
|
|
118
122
|
@work_dir ||= jbundler_env('JBUNDLE_WORK_DIR') || 'target'
|
119
123
|
end
|
120
124
|
|
125
|
+
def vendor_dir
|
126
|
+
@vendor_dir ||= jbundler_env('JBUNDLE_VENDOR_DIR') || File.join( 'vendor', 'jars' )
|
127
|
+
end
|
128
|
+
|
121
129
|
end
|
122
130
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'jbundler/configurator'
|
2
|
+
module JBundler
|
3
|
+
class Configurator
|
4
|
+
|
5
|
+
attr_accessor :groups, :bootstrap, :verbose, :compile, :work_dir
|
6
|
+
|
7
|
+
def initialize( config )
|
8
|
+
@config = config
|
9
|
+
end
|
10
|
+
|
11
|
+
def configure( maven )
|
12
|
+
maven.property( 'jbundler.jarfile', @config.jarfile )
|
13
|
+
maven.property( 'jbundler.gemfile', @config.gemfile )
|
14
|
+
maven.property( 'jbundler.workdir', work_dir )
|
15
|
+
maven.property( 'jbundler.groups', @groups )
|
16
|
+
maven.property( 'jbundler.bootstrap', @bootstrap )
|
17
|
+
end
|
18
|
+
|
19
|
+
def work_dir
|
20
|
+
@work_dir ||= File.expand_path( @config.work_dir )
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/jbundler/executable.rb
CHANGED
@@ -1,8 +1,5 @@
|
|
1
|
-
require 'maven/tools/jarfile'
|
2
|
-
require 'maven/tools/dsl'
|
3
1
|
require 'maven/ruby/maven'
|
4
2
|
require 'fileutils'
|
5
|
-
require 'jbundler/executable_pom'
|
6
3
|
module JBundler
|
7
4
|
class Executable
|
8
5
|
|
@@ -13,30 +10,32 @@ module JBundler
|
|
13
10
|
end
|
14
11
|
def method_missing(m, *args, &b)
|
15
12
|
args[ 0 ].sub!(/^.* - /, '' )
|
16
|
-
args[ 0 ] = 'asd'
|
17
13
|
@a.send(m,*args, &b)
|
18
14
|
end
|
19
15
|
end
|
20
16
|
|
21
|
-
BOOTSTRAP = 'jar-bootstrap.rb'
|
22
|
-
|
23
|
-
include Maven::Tools::DSL
|
24
|
-
|
25
17
|
def initialize( bootstrap, config, compile, verbose, *groups )
|
26
18
|
raise "file not found: #{bootstrap}" unless File.exists?( bootstrap )
|
27
|
-
@
|
19
|
+
@config = Configurator.new( config )
|
20
|
+
@config.bootstrap = bootstrap
|
21
|
+
@config.compile = compile
|
22
|
+
@config.verbose = verbose
|
23
|
+
@config.groups = groups.join( ',' )
|
28
24
|
end
|
29
25
|
|
30
26
|
def packit
|
31
|
-
m = Maven::Ruby::Maven.new
|
32
|
-
m.
|
33
|
-
|
27
|
+
m = Maven::Ruby::Maven.new
|
28
|
+
m.options[ '-f' ] = File.join( File.dirname( __FILE__ ),
|
29
|
+
'executable_pom.rb' )
|
30
|
+
@config.configure( m )
|
31
|
+
m.verbose = @config.verbose
|
32
|
+
m.package( '-P', @config.compile ? :compile : :no_compile )
|
34
33
|
|
35
|
-
FileUtils.rm_f( 'dependency-reduced-pom.xml' )
|
34
|
+
#FileUtils.rm_f( 'dependency-reduced-pom.xml' )
|
36
35
|
puts
|
37
36
|
puts 'now you can execute your jar like this'
|
38
37
|
puts
|
39
|
-
puts "\tjava -jar #{@
|
38
|
+
puts "\tjava -jar #{@config.work_dir}/executable/*.jar"
|
40
39
|
puts
|
41
40
|
end
|
42
41
|
end
|
@@ -1,149 +1,110 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require '
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
class ExecutablePom
|
9
|
-
|
10
|
-
BOOTSTRAP = 'jar-bootstrap.rb'
|
1
|
+
begin
|
2
|
+
groups = java.lang.System.getProperty( "jbundler.groups" ) || ''
|
3
|
+
require 'bundler'
|
4
|
+
Bundler.setup( *groups.split( /,/ ) )
|
5
|
+
rescue LoadError
|
6
|
+
# ignore- bundler is optional
|
7
|
+
end
|
11
8
|
|
12
|
-
|
9
|
+
jfile = ::Maven::Tools::Jarfile.new( java.lang.System.getProperty( "jbundler.jarfile" ) )
|
13
10
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
@compile = compile
|
19
|
-
@verbose = verbose
|
20
|
-
end
|
11
|
+
workdir = java.lang.System.getProperty( "jbundler.workdir" )
|
12
|
+
jworkdir = File.join( workdir, 'executable' )
|
13
|
+
FileUtils.rm_rf( jworkdir )
|
14
|
+
FileUtils.mkdir_p( jworkdir )
|
21
15
|
|
22
|
-
|
16
|
+
BOOTSTRAP = 'jar-bootstrap.rb' unless defined? BOOTSTRAP
|
23
17
|
|
24
|
-
|
25
|
-
|
26
|
-
raise 'jruby before 1.6 are not supported'
|
27
|
-
elsif ( jruby < '1.7' )
|
28
|
-
warn 'jruby version below 1.7 uses jruby-complete'
|
29
|
-
jar 'org.jruby:jruby-complete', jruby
|
30
|
-
elsif ( jruby < '1.7.5' )
|
31
|
-
jar 'org.jruby:jruby-core', jruby
|
32
|
-
else
|
33
|
-
jar 'org.jruby:jruby', jruby
|
34
|
-
end
|
35
|
-
end
|
18
|
+
FileUtils.cp( java.lang.System.getProperty( 'jbundler.bootstrap'),
|
19
|
+
File.join( jworkdir, BOOTSTRAP ) )
|
36
20
|
|
37
|
-
|
38
|
-
|
39
|
-
|
21
|
+
def jruby_home( path )
|
22
|
+
File.join( 'META-INF/jruby.home/lib/ruby/gems/shared', path )
|
23
|
+
end
|
40
24
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
25
|
+
|
26
|
+
jfile.locked.each do |dep|
|
27
|
+
artifact( dep )
|
28
|
+
end
|
29
|
+
build.final_name = model.artifact_id
|
30
|
+
build.directory = jworkdir
|
31
|
+
resource do
|
32
|
+
directory jworkdir
|
33
|
+
includes [ BOOTSTRAP ]
|
34
|
+
end
|
35
|
+
Gem.loaded_specs.values.each do |s|
|
36
|
+
resource do
|
37
|
+
directory s.full_gem_path
|
38
|
+
target_path File.join( jruby_home( 'gems' ),
|
39
|
+
File.basename( s.full_gem_path ) )
|
40
|
+
if s.full_gem_path == File.expand_path( '.' )
|
41
|
+
excludes [ "**/#{workdir}/**" ]
|
56
42
|
end
|
43
|
+
end
|
44
|
+
resource do
|
45
|
+
directory File.dirname( s.loaded_from )
|
46
|
+
includes [ File.basename( s.loaded_from ) ]
|
47
|
+
target_path jruby_home( 'specifications' )
|
48
|
+
end
|
49
|
+
end
|
57
50
|
|
58
|
-
|
59
|
-
|
60
|
-
jarfile.locked.each do |dep|
|
61
|
-
artifact( dep )
|
62
|
-
end
|
63
|
-
build.final_name = model.artifact_id
|
64
|
-
build.directory = work_dir
|
65
|
-
resource do
|
66
|
-
directory work_dir
|
67
|
-
includes [ BOOTSTRAP ]
|
68
|
-
end
|
69
|
-
Gem.loaded_specs.values.each do |s|
|
70
|
-
resource do
|
71
|
-
directory s.full_gem_path
|
72
|
-
target_path File.join( jruby_home( 'gems' ),
|
73
|
-
File.basename( s.full_gem_path ) )
|
74
|
-
if s.full_gem_path == File.expand_path( '.' )
|
75
|
-
excludes [ "**/#{File.basename( @config.work_dir )}/**" ]
|
76
|
-
end
|
77
|
-
end
|
78
|
-
resource do
|
79
|
-
directory File.dirname( s.loaded_from )
|
80
|
-
includes [ File.basename( s.loaded_from ) ]
|
81
|
-
target_path jruby_home( 'specifications' )
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
properties( 'maven.test.skip' => true,
|
86
|
-
'project.build.sourceEncoding' => 'utf-8' )
|
51
|
+
properties( 'maven.test.skip' => true,
|
52
|
+
'project.build.sourceEncoding' => 'utf-8' )
|
87
53
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
if @compile
|
107
|
-
|
108
|
-
properties 'jruby.plugins.version' => Maven::Tools::VERSIONS[ :jruby_plugins ]
|
109
|
-
plugin( 'de.saumya.mojo:jruby-maven-plugin', '${jruby.plugins.version}' ) do
|
110
|
-
execute_goal( :compile,
|
111
|
-
:rubySourceDirectory => 'lib',
|
112
|
-
:jrubycVerbose => @verbose)
|
113
|
-
end
|
114
|
-
|
115
|
-
else
|
54
|
+
jfile.populate_unlocked do |dsl|
|
55
|
+
|
56
|
+
# setup jruby version
|
57
|
+
jruby_version = dsl.jruby || JRUBY_VERSION
|
58
|
+
if ( jruby_version < '1.6' )
|
59
|
+
raise 'jruby before 1.6 are not supported'
|
60
|
+
elsif ( jruby_version < '1.7' )
|
61
|
+
warn 'jruby version below 1.7 uses jruby-complete'
|
62
|
+
jar 'org.jruby:jruby-complete', jruby_version
|
63
|
+
elsif ( jruby_version < '1.7.5' )
|
64
|
+
jar 'org.jruby:jruby-core', jruby_version
|
65
|
+
else
|
66
|
+
jar 'org.jruby:jruby', jruby_version
|
67
|
+
end
|
116
68
|
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
end
|
69
|
+
local = dsl.artifacts.select do |a|
|
70
|
+
a[ :system_path ]
|
71
|
+
end
|
121
72
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
73
|
+
# setup a localrepo for the local jars if needed
|
74
|
+
if local
|
75
|
+
localrepo = File.join( jworkdir, 'localrepo' )
|
76
|
+
repository( "file:#{localrepo}", :id => 'localrepo' )
|
77
|
+
local.each do |a|
|
78
|
+
file = "#{localrepo}/#{a[ :group_id ].gsub( /\./, File::SEPARATOR)}/#{a[ :artifact_id ]}/#{a[ :version ]}/#{a[ :artifact_id ]}-#{a[ :version ]}.#{a[ :type ]}"
|
79
|
+
FileUtils.mkdir_p( File.dirname( file ) )
|
80
|
+
FileUtils.cp( a.delete( :system_path ), file )
|
81
|
+
a.delete( :scope )
|
82
|
+
jar a
|
130
83
|
end
|
84
|
+
end
|
85
|
+
end
|
131
86
|
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
end
|
142
|
-
@work_dir
|
143
|
-
end
|
87
|
+
profile :compile do
|
88
|
+
|
89
|
+
properties 'jruby.plugins.version' => Maven::Tools::VERSIONS[ :jruby_plugins ]
|
90
|
+
plugin( 'de.saumya.mojo:jruby-maven-plugin', '${jruby.plugins.version}' ) do
|
91
|
+
execute_goal( :compile,
|
92
|
+
:rubySourceDirectory => 'lib',
|
93
|
+
:jrubycVerbose => @verbose)
|
94
|
+
end
|
95
|
+
end
|
144
96
|
|
145
|
-
|
146
|
-
|
147
|
-
|
97
|
+
profile :no_compile do
|
98
|
+
build do
|
99
|
+
resource do
|
100
|
+
directory '${basedir}/lib'
|
101
|
+
includes [ '**/*.rb' ]
|
102
|
+
end
|
148
103
|
end
|
149
104
|
end
|
105
|
+
|
106
|
+
plugin( :shade, '2.1',
|
107
|
+
:transformers => [ { '@implementation' => 'org.apache.maven.plugins.shade.resource.ManifestResourceTransformer',
|
108
|
+
:mainClass => 'org.jruby.JarBootstrapMain' } ] ) do
|
109
|
+
execute_goals( 'shade', :phase => 'package' )
|
110
|
+
end
|
data/lib/jbundler/lazy.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# Copyright (C) 2013
|
2
|
+
# Copyright (C) 2013 Christian Meier
|
3
3
|
#
|
4
4
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
5
5
|
# this software and associated documentation files (the "Software"), to deal in
|
@@ -99,4 +99,4 @@ module JBundler
|
|
99
99
|
end
|
100
100
|
end
|
101
101
|
end
|
102
|
-
end
|
102
|
+
end
|
data/lib/jbundler/pom.rb
CHANGED
data/lib/jbundler/tree.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'jbundler/configurator'
|
1
2
|
require 'maven/tools/jarfile'
|
2
3
|
require 'maven/tools/dsl'
|
3
4
|
require 'maven/tools/model'
|
@@ -9,46 +10,27 @@ module JBundler
|
|
9
10
|
include Maven::Tools::DSL
|
10
11
|
|
11
12
|
def initialize( config )
|
12
|
-
@config = config
|
13
|
+
@config = Configurator.new( config )
|
13
14
|
end
|
14
15
|
|
15
16
|
def show_it( debug = false )
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
basedir( File.dirname( @config.jarfile ) )
|
17
|
+
m = Maven::Ruby::Maven.new
|
18
|
+
m.options[ '-f' ] = File.join( File.dirname( __FILE__ ), 'tree_pom.rb' )
|
19
|
+
@config.configure( m )
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
build.directory = @config.work_dir if @config.work_dir != 'target'
|
26
|
-
|
27
|
-
properties( 'project.build.sourceEncoding' => 'utf-8' )
|
21
|
+
unless debug
|
22
|
+
# silence the output
|
23
|
+
old = java.lang.System.err
|
24
|
+
java.lang.System.err = java.io.PrintStream.new( java.io.ByteArrayOutputStream.new )
|
28
25
|
end
|
29
26
|
|
30
|
-
output = java.io.ByteArrayOutputStream.new
|
31
|
-
out = java.io.PrintStream.new( output )
|
32
|
-
old = java.lang.System.err
|
33
|
-
java.lang.System.err = out
|
34
|
-
|
35
|
-
m = Maven::Ruby::Maven.new( project, '.tree.pom.xml' )
|
36
27
|
m.exec( 'org.apache.maven.plugins:maven-dependency-plugin:2.8:tree' )
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
unless debug
|
42
|
-
result = result.select do |line|
|
43
|
-
line =~ /^[INFO].*/
|
44
|
-
end
|
45
|
-
end
|
46
|
-
result = result.each do |line|
|
47
|
-
line.gsub!( /^.* - /, '' )
|
48
|
-
end
|
49
|
-
$stdout.puts result.join( "\n" )#.gsub( /^.* - /, '' )#.gsub( /\n\n\n/, "\n" )
|
28
|
+
|
29
|
+
puts File.read( File.join( File.expand_path( @config.work_dir ),
|
30
|
+
'tree.txt' ) )
|
31
|
+
|
50
32
|
ensure
|
51
|
-
java.lang.System.err = old
|
33
|
+
java.lang.System.err = old if old
|
52
34
|
end
|
53
35
|
end
|
54
36
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
jfile = java.lang.System.getProperty( "jbundler.jarfile" )
|
2
|
+
gfile = java.lang.System.getProperty( "jbundler.gemfile" )
|
3
|
+
jworkdir = java.lang.System.getProperty( "jbundler.workdir" )
|
4
|
+
|
5
|
+
basedir( File.dirname( jfile ) )
|
6
|
+
|
7
|
+
gemfile( gfile ) if File.exists? gfile
|
8
|
+
|
9
|
+
jarfile( jfile, :skip_locked => true )
|
10
|
+
|
11
|
+
build do
|
12
|
+
directory = jworkdir
|
13
|
+
default_goal 'dependency:tree'
|
14
|
+
end
|
15
|
+
|
16
|
+
properties( 'project.build.sourceEncoding' => 'utf-8',
|
17
|
+
'tesla.dump.readOnly' => true,
|
18
|
+
'tesla.dump.pom' => 'tree.pom.xml',
|
19
|
+
'outputFile' => '${project.build.directory}/tree.txt' )
|