jbundler 0.0.1 → 0.2.0
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/Build.md +32 -0
- data/Gemfile +10 -0
- data/Gemfile.lock +35 -0
- data/Gemfile.lock- +33 -0
- data/Readme.md +88 -0
- data/lib/jbundler.jar +0 -0
- data/lib/jbundler.rb +25 -20
- data/lib/jbundler.rb~ +2 -0
- data/lib/jbundler/aether.rb +44 -15
- data/lib/jbundler/aether.rb~ +68 -0
- data/lib/jbundler/classpath_file.rb +2 -4
- data/lib/jbundler/classpath_file.rb~ +207 -0
- data/lib/jbundler/gemfile_lock.rb +4 -4
- data/lib/jbundler/gemfile_lock.rb~ +17 -0
- data/lib/jbundler/maven.rb~ +252 -0
- data/lib/jbundler/maven_gemify3.rb~ +337 -0
- data/lib/jbundler/{maven_util.rb → maven_util.rb~} +4 -14
- data/lib/jbundler/maven_version.rb~ +4 -0
- data/lib/jbundler/mavenfile.rb~ +9 -0
- data/lib/jbundler/pom.rb +2 -2
- data/lib/jbundler/pom.rb~ +251 -0
- data/spec/aether_spec.rb +78 -0
- data/spec/{mavenfile_spec.rb → aether_spec.rb~} +12 -14
- data/spec/classpath_file_spec.rb +26 -24
- data/spec/classpath_file_spec.rb~ +81 -0
- data/spec/{maven_util_spec.rb → maven_util_spec.rb~} +1 -12
- data/spec/mavenfile_spec.rb~ +40 -0
- data/spec/pom_spec.rb +2 -0
- data/spec/pom_spec.rb~ +40 -0
- data/spec/setup.rb +3 -0
- data/spec/setup.rb~ +3 -0
- metadata +82 -54
- data/lib/jbundler/mavenfile.rb +0 -77
@@ -7,8 +7,6 @@ module JBundler
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def require_classpath
|
10
|
-
p File.exists? @classpathfile
|
11
|
-
p @classpathfile
|
12
10
|
load File.expand_path @classpathfile
|
13
11
|
end
|
14
12
|
|
@@ -20,8 +18,8 @@ p @classpathfile
|
|
20
18
|
File.exists?(@classpathfile)
|
21
19
|
end
|
22
20
|
|
23
|
-
def needs_update?(
|
24
|
-
!
|
21
|
+
def needs_update?(jarfile, gemfile_lock)
|
22
|
+
!exists? || !jarfile.exists_lock? || (jarfile.exists? && (jarfile.mtime > mtime)) || (jarfile.exists_lock? && (jarfile.mtime_lock > mtime)) || (gemfile_lock.mtime > mtime)
|
25
23
|
end
|
26
24
|
|
27
25
|
def generate(classpath)
|
@@ -0,0 +1,207 @@
|
|
1
|
+
require 'uri'
|
2
|
+
require 'tempfile'
|
3
|
+
require 'fileutils'
|
4
|
+
require 'set'
|
5
|
+
require 'jbundler/gemfile_lock'
|
6
|
+
require 'jbundler/pom'
|
7
|
+
require 'java'
|
8
|
+
|
9
|
+
# A modified maven_gemify2 taken from https://github.com/ANithian/bundler/blob/a29d4550dfb2f24372bf6e60f00e633ff92d5d64/lib/bundler/maven_gemify2.rb
|
10
|
+
module JBundler
|
11
|
+
|
12
|
+
class Maven3NotFound < StandardError; end
|
13
|
+
|
14
|
+
class Maven
|
15
|
+
attr_reader :repositories
|
16
|
+
|
17
|
+
#repositories should be an array of urls
|
18
|
+
def initialize(*repositories)
|
19
|
+
maven # ensure maven initialized
|
20
|
+
@repositories = Set.new
|
21
|
+
if repositories.length > 0
|
22
|
+
@repositories.merge([repositories].flatten)
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
def add_repository(repository_url)
|
28
|
+
@repositories << repository_url
|
29
|
+
end
|
30
|
+
|
31
|
+
@@verbose = false
|
32
|
+
def self.verbose?
|
33
|
+
@@verbose || $DEBUG
|
34
|
+
end
|
35
|
+
def verbose?
|
36
|
+
self.class.verbose?
|
37
|
+
end
|
38
|
+
def self.verbose=(v)
|
39
|
+
@@verbose = v
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
def self.maven_config
|
44
|
+
@maven_config ||= Gem.configuration["maven"] || {}
|
45
|
+
end
|
46
|
+
def maven_config; self.class.maven_config; end
|
47
|
+
|
48
|
+
def self.java_imports
|
49
|
+
%w(
|
50
|
+
org.codehaus.plexus.classworlds.ClassWorld
|
51
|
+
org.codehaus.plexus.DefaultContainerConfiguration
|
52
|
+
org.codehaus.plexus.DefaultPlexusContainer
|
53
|
+
org.apache.maven.Maven
|
54
|
+
org.apache.maven.repository.RepositorySystem
|
55
|
+
org.apache.maven.execution.DefaultMavenExecutionRequest
|
56
|
+
org.apache.maven.artifact.repository.MavenArtifactRepository
|
57
|
+
org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout
|
58
|
+
org.apache.maven.artifact.repository.ArtifactRepositoryPolicy
|
59
|
+
javax.xml.stream.XMLStreamWriter
|
60
|
+
javax.xml.stream.XMLOutputFactory
|
61
|
+
javax.xml.stream.XMLStreamException
|
62
|
+
).each {|i| java_import i }
|
63
|
+
end
|
64
|
+
|
65
|
+
def self.create_maven
|
66
|
+
bin = nil
|
67
|
+
if ENV['M2_HOME'] # use M2_HOME if set
|
68
|
+
bin = File.join(ENV['M2_HOME'], "bin")
|
69
|
+
else
|
70
|
+
ENV['PATH'].split(File::PATH_SEPARATOR).detect do |path|
|
71
|
+
mvn = File.join(path, "mvn")
|
72
|
+
if File.exists?(mvn)
|
73
|
+
if File.symlink?(mvn)
|
74
|
+
link = File.readlink(mvn)
|
75
|
+
if link =~ /^\// # is absolute path
|
76
|
+
bin = File.dirname(File.expand_path(link))
|
77
|
+
else # is relative path so join with dir of the maven command
|
78
|
+
bin = File.dirname(File.expand_path(File.join(File.dirname(mvn), link)))
|
79
|
+
end
|
80
|
+
else # is no link so just expand it
|
81
|
+
bin = File.expand_path(path)
|
82
|
+
end
|
83
|
+
else
|
84
|
+
nil
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
bin = "/usr/share/maven2/bin" if bin.nil? # OK let's try debian default
|
89
|
+
if File.exists?(bin)
|
90
|
+
@mvn = File.join(bin, "mvn")
|
91
|
+
if Dir.glob(File.join(bin, "..", "lib", "maven-core-3.*jar")).size == 0
|
92
|
+
begin
|
93
|
+
gem 'ruby-maven', ">=0"
|
94
|
+
bin = File.dirname(Gem.bin_path('ruby-maven', "rmvn"))
|
95
|
+
@mvn = File.join(bin, "rmvn")
|
96
|
+
rescue LoadError
|
97
|
+
bin = nil
|
98
|
+
end
|
99
|
+
end
|
100
|
+
else
|
101
|
+
bin = nil
|
102
|
+
end
|
103
|
+
raise Maven3NotFound.new("can not find maven3 installation. install ruby-maven with\n\n\tjruby -S gem install ruby-maven\n\n") if bin.nil?
|
104
|
+
|
105
|
+
warn "Using Maven install at #{bin}" if verbose?
|
106
|
+
|
107
|
+
boot = File.join(bin, "..", "boot")
|
108
|
+
lib = File.join(bin, "..", "lib")
|
109
|
+
ext = File.join(bin, "..", "ext")
|
110
|
+
(Dir.glob(lib + "/*jar") + Dir.glob(boot + "/*jar")).each {|path| require path }
|
111
|
+
|
112
|
+
java.lang.System.setProperty("classworlds.conf", File.join(bin, "m2.conf"))
|
113
|
+
java.lang.System.setProperty("maven.home", File.join(bin, ".."))
|
114
|
+
java_imports
|
115
|
+
|
116
|
+
class_world = ClassWorld.new("plexus.core", java.lang.Thread.currentThread().getContextClassLoader());
|
117
|
+
config = DefaultContainerConfiguration.new
|
118
|
+
config.set_class_world class_world
|
119
|
+
config.set_name "ruby-tools"
|
120
|
+
container = DefaultPlexusContainer.new(config);
|
121
|
+
@@execution_request_populator = container.lookup(org.apache.maven.execution.MavenExecutionRequestPopulator.java_class)
|
122
|
+
|
123
|
+
@@settings_builder = container.lookup(org.apache.maven.settings.building.SettingsBuilder.java_class )
|
124
|
+
container.lookup(Maven.java_class)
|
125
|
+
end
|
126
|
+
|
127
|
+
def self.maven
|
128
|
+
@maven ||= create_maven
|
129
|
+
end
|
130
|
+
def maven; self.class.maven; end
|
131
|
+
|
132
|
+
def self.temp_dir
|
133
|
+
@temp_dir ||=
|
134
|
+
begin
|
135
|
+
d=Dir.mktmpdir
|
136
|
+
at_exit {FileUtils.rm_rf(d.dup)}
|
137
|
+
d
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
def temp_dir
|
142
|
+
self.class.temp_dir
|
143
|
+
end
|
144
|
+
|
145
|
+
def execute(goals, pomFile, props = {})
|
146
|
+
request = DefaultMavenExecutionRequest.new
|
147
|
+
request.set_show_errors(true)
|
148
|
+
|
149
|
+
props.each do |k,v|
|
150
|
+
request.user_properties.put(k.to_s, v.to_s)
|
151
|
+
end
|
152
|
+
request.set_goals(goals)
|
153
|
+
request.set_logging_level 0
|
154
|
+
request.setPom(java.io.File.new(pomFile))
|
155
|
+
if verbose?
|
156
|
+
active_profiles = request.getActiveProfiles.collect{ |p| p.to_s }
|
157
|
+
puts "active profiles:\n\t[#{active_profiles.join(', ')}]"
|
158
|
+
puts "maven goals:"
|
159
|
+
request.goals.each { |g| puts "\t#{g}" }
|
160
|
+
puts "system properties:"
|
161
|
+
request.getUserProperties.map.each { |k,v| puts "\t#{k} => #{v}" }
|
162
|
+
puts
|
163
|
+
end
|
164
|
+
out = java.lang.System.out
|
165
|
+
string_io = java.io.ByteArrayOutputStream.new
|
166
|
+
java.lang.System.setOut(java.io.PrintStream.new(string_io))
|
167
|
+
result = maven.execute request
|
168
|
+
java.lang.System.out = out
|
169
|
+
has_exceptions = false
|
170
|
+
result.exceptions.each do |e|
|
171
|
+
has_exceptions = true
|
172
|
+
e.print_stack_trace
|
173
|
+
string_io.write(e.get_message.to_java_string.get_bytes)
|
174
|
+
end
|
175
|
+
raise string_io.to_s if has_exceptions
|
176
|
+
string_io.to_s
|
177
|
+
end
|
178
|
+
|
179
|
+
public
|
180
|
+
|
181
|
+
def generate_classpath(mavenfile = 'Mvnfile', classpathfile = '.jbundler/classpath.rb')
|
182
|
+
|
183
|
+
#to resolve deps and generate a classpath
|
184
|
+
pomfile=File.join(temp_dir,
|
185
|
+
"pom.xml")
|
186
|
+
Pom.new(pomfile, "mavengemify", "1.0-SNAPSHOT",
|
187
|
+
File.read(mavenfile).split(/\n/) + GemfileLock.new.jar_deps)
|
188
|
+
|
189
|
+
execute(["dependency:resolve","dependency:build-classpath"],pomfile,{"mdep.outputFile" => "cp.txt","mdep.fileSeparator"=>"/"})
|
190
|
+
|
191
|
+
FileUtils.mkdir_p(File.dirname(classpathfile))
|
192
|
+
File.open(classpathfile, 'w') do |f|
|
193
|
+
f.puts "JBUNDLER_CLASSPATH = []"
|
194
|
+
path_separator = java.lang.System.getProperty("path.separator").to_s
|
195
|
+
File.read(File.join(temp_dir,"cp.txt")).each do |line|
|
196
|
+
line.split(/#{path_separator}/).each do |path|
|
197
|
+
f.puts "JBUNDLER_CLASSPATH << '#{path}'" unless path =~ /pom$/
|
198
|
+
end
|
199
|
+
end
|
200
|
+
f.puts "JBUNDLER_CLASSPATH.freeze"
|
201
|
+
f.puts "JBUNDLER_CLASSPATH.each { |c| require c }"
|
202
|
+
f.close
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
end
|
207
|
+
end
|
@@ -5,8 +5,8 @@ module JBundler
|
|
5
5
|
|
6
6
|
class GemfileLock
|
7
7
|
|
8
|
-
def initialize(
|
9
|
-
@
|
8
|
+
def initialize(jarfile, lockfile = 'Gemfile.lock')
|
9
|
+
@jarfile = jarfile
|
10
10
|
@lockfile = lockfile if File.exists?(lockfile)
|
11
11
|
end
|
12
12
|
|
@@ -14,7 +14,7 @@ module JBundler
|
|
14
14
|
File.mtime(@lockfile) if @lockfile
|
15
15
|
end
|
16
16
|
|
17
|
-
def
|
17
|
+
def populate_dependencies(aether)
|
18
18
|
if @lockfile
|
19
19
|
# assuming we run in Bundler context here
|
20
20
|
# at we have a Gemfile.lock :)
|
@@ -28,7 +28,7 @@ module JBundler
|
|
28
28
|
unless jars.empty?
|
29
29
|
pom = Pom.new(spec.name, spec.version, jars, "pom")
|
30
30
|
aether.install(pom.coordinate, pom.file)
|
31
|
-
unless @
|
31
|
+
unless @jarfile.locked?(pom.coordinate)
|
32
32
|
aether.add_artifact(pom.coordinate)
|
33
33
|
end
|
34
34
|
end
|
@@ -0,0 +1,252 @@
|
|
1
|
+
require 'uri'
|
2
|
+
require 'tempfile'
|
3
|
+
require 'fileutils'
|
4
|
+
require 'set'
|
5
|
+
require 'java'
|
6
|
+
|
7
|
+
# A modified maven_gemify
|
8
|
+
module JBundler
|
9
|
+
|
10
|
+
class Maven3NotFound < StandardError; end
|
11
|
+
|
12
|
+
class Maven
|
13
|
+
attr_reader :repositories
|
14
|
+
|
15
|
+
#repositories should be an array of urls
|
16
|
+
def initialize(*repositories)
|
17
|
+
maven # ensure maven initialized
|
18
|
+
@repositories = Set.new
|
19
|
+
if repositories.length > 0
|
20
|
+
@repositories.merge([repositories].flatten)
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
def add_repository(repository_url)
|
26
|
+
@repositories << repository_url
|
27
|
+
end
|
28
|
+
|
29
|
+
@@verbose = false
|
30
|
+
def self.verbose?
|
31
|
+
@@verbose || $DEBUG
|
32
|
+
end
|
33
|
+
def verbose?
|
34
|
+
self.class.verbose?
|
35
|
+
end
|
36
|
+
def self.verbose=(v)
|
37
|
+
@@verbose = v
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
def self.maven_config
|
42
|
+
@maven_config ||= Gem.configuration["maven"] || {}
|
43
|
+
end
|
44
|
+
def maven_config; self.class.maven_config; end
|
45
|
+
|
46
|
+
def self.java_imports
|
47
|
+
%w(
|
48
|
+
org.codehaus.plexus.classworlds.ClassWorld
|
49
|
+
org.codehaus.plexus.DefaultContainerConfiguration
|
50
|
+
org.codehaus.plexus.DefaultPlexusContainer
|
51
|
+
org.apache.maven.Maven
|
52
|
+
org.apache.maven.repository.RepositorySystem
|
53
|
+
org.apache.maven.execution.DefaultMavenExecutionRequest
|
54
|
+
org.apache.maven.artifact.repository.MavenArtifactRepository
|
55
|
+
org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout
|
56
|
+
org.apache.maven.artifact.repository.ArtifactRepositoryPolicy
|
57
|
+
javax.xml.stream.XMLStreamWriter
|
58
|
+
javax.xml.stream.XMLOutputFactory
|
59
|
+
javax.xml.stream.XMLStreamException
|
60
|
+
).each {|i| java_import i }
|
61
|
+
end
|
62
|
+
|
63
|
+
def self.create_maven
|
64
|
+
require 'java' # done lazily, so we're not loading it all the time
|
65
|
+
bin = nil
|
66
|
+
if ENV['M2_HOME'] # use M2_HOME if set
|
67
|
+
bin = File.join(ENV['M2_HOME'], "bin")
|
68
|
+
else
|
69
|
+
ENV['PATH'].split(File::PATH_SEPARATOR).detect do |path|
|
70
|
+
mvn = File.join(path, "mvn")
|
71
|
+
if File.exists?(mvn)
|
72
|
+
if File.symlink?(mvn)
|
73
|
+
link = File.readlink(mvn)
|
74
|
+
if link =~ /^\// # is absolute path
|
75
|
+
bin = File.dirname(File.expand_path(link))
|
76
|
+
else # is relative path so join with dir of the maven command
|
77
|
+
bin = File.dirname(File.expand_path(File.join(File.dirname(mvn), link)))
|
78
|
+
end
|
79
|
+
else # is no link so just expand it
|
80
|
+
bin = File.expand_path(path)
|
81
|
+
end
|
82
|
+
else
|
83
|
+
nil
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
bin = "/usr/share/maven2/bin" if bin.nil? # OK let's try debian default
|
88
|
+
if File.exists?(bin)
|
89
|
+
@mvn = File.join(bin, "mvn")
|
90
|
+
if Dir.glob(File.join(bin, "..", "lib", "maven-core-3.*jar")).size == 0
|
91
|
+
begin
|
92
|
+
gem 'ruby-maven', ">=0"
|
93
|
+
bin = File.dirname(Gem.bin_path('ruby-maven', "rmvn"))
|
94
|
+
@mvn = File.join(bin, "rmvn")
|
95
|
+
rescue LoadError
|
96
|
+
bin = nil
|
97
|
+
end
|
98
|
+
end
|
99
|
+
else
|
100
|
+
bin = nil
|
101
|
+
end
|
102
|
+
raise Maven3NotFound.new("can not find maven3 installation. install ruby-maven with\n\n\tjruby -S gem install ruby-maven\n\n") if bin.nil?
|
103
|
+
|
104
|
+
warn "Using Maven install at #{bin}" if verbose?
|
105
|
+
|
106
|
+
boot = File.join(bin, "..", "boot")
|
107
|
+
lib = File.join(bin, "..", "lib")
|
108
|
+
ext = File.join(bin, "..", "ext")
|
109
|
+
(Dir.glob(lib + "/*jar") + Dir.glob(boot + "/*jar")).each {|path| require path }
|
110
|
+
|
111
|
+
java.lang.System.setProperty("classworlds.conf", File.join(bin, "m2.conf"))
|
112
|
+
java.lang.System.setProperty("maven.home", File.join(bin, ".."))
|
113
|
+
java_imports
|
114
|
+
|
115
|
+
class_world = ClassWorld.new("plexus.core", java.lang.Thread.currentThread().getContextClassLoader());
|
116
|
+
config = DefaultContainerConfiguration.new
|
117
|
+
config.set_class_world class_world
|
118
|
+
config.set_name "ruby-tools"
|
119
|
+
container = DefaultPlexusContainer.new(config);
|
120
|
+
@@execution_request_populator = container.lookup(org.apache.maven.execution.MavenExecutionRequestPopulator.java_class)
|
121
|
+
|
122
|
+
@@settings_builder = container.lookup(org.apache.maven.settings.building.SettingsBuilder.java_class )
|
123
|
+
container.lookup(Maven.java_class)
|
124
|
+
end
|
125
|
+
|
126
|
+
def self.maven
|
127
|
+
@maven ||= create_maven
|
128
|
+
end
|
129
|
+
def maven; self.class.maven; end
|
130
|
+
|
131
|
+
def self.temp_dir
|
132
|
+
@temp_dir ||=
|
133
|
+
begin
|
134
|
+
d=Dir.mktmpdir
|
135
|
+
at_exit {FileUtils.rm_rf(d.dup)}
|
136
|
+
d
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
def temp_dir
|
141
|
+
self.class.temp_dir
|
142
|
+
end
|
143
|
+
|
144
|
+
def execute(goals, pomFile, props = {})
|
145
|
+
request = DefaultMavenExecutionRequest.new
|
146
|
+
request.set_show_errors(true)
|
147
|
+
|
148
|
+
props.each do |k,v|
|
149
|
+
request.user_properties.put(k.to_s, v.to_s)
|
150
|
+
end
|
151
|
+
request.set_goals(goals)
|
152
|
+
request.set_logging_level 0
|
153
|
+
request.setPom(java.io.File.new(pomFile))
|
154
|
+
if verbose?
|
155
|
+
active_profiles = request.getActiveProfiles.collect{ |p| p.to_s }
|
156
|
+
puts "active profiles:\n\t[#{active_profiles.join(', ')}]"
|
157
|
+
puts "maven goals:"
|
158
|
+
request.goals.each { |g| puts "\t#{g}" }
|
159
|
+
puts "system properties:"
|
160
|
+
request.getUserProperties.map.each { |k,v| puts "\t#{k} => #{v}" }
|
161
|
+
puts
|
162
|
+
end
|
163
|
+
out = java.lang.System.out
|
164
|
+
string_io = java.io.ByteArrayOutputStream.new
|
165
|
+
java.lang.System.setOut(java.io.PrintStream.new(string_io))
|
166
|
+
result = maven.execute request
|
167
|
+
java.lang.System.out = out
|
168
|
+
has_exceptions = false
|
169
|
+
result.exceptions.each do |e|
|
170
|
+
has_exceptions = true
|
171
|
+
e.print_stack_trace
|
172
|
+
string_io.write(e.get_message.to_java_string.get_bytes)
|
173
|
+
end
|
174
|
+
raise string_io.to_s if has_exceptions
|
175
|
+
string_io.to_s
|
176
|
+
end
|
177
|
+
|
178
|
+
def writeElement(xmlWriter,element_name, text)
|
179
|
+
xmlWriter.writeStartElement(element_name.to_java)
|
180
|
+
xmlWriter.writeCharacters(text.to_java)
|
181
|
+
xmlWriter.writeEndElement
|
182
|
+
end
|
183
|
+
|
184
|
+
public
|
185
|
+
|
186
|
+
def generate_classpath(mavenfile = 'Mvnfile', classpathfile = '.jbundler/classpath.rb')
|
187
|
+
|
188
|
+
#to resolve deps and generate a classpath
|
189
|
+
pomfile=File.join(temp_dir,"pom.xml")
|
190
|
+
puts "pomfile=#{pomfile}"
|
191
|
+
out = java.io.BufferedOutputStream.new(java.io.FileOutputStream.new(pomfile.to_java))
|
192
|
+
outputFactory = XMLOutputFactory.newFactory()
|
193
|
+
xmlStreamWriter = outputFactory.createXMLStreamWriter(out)
|
194
|
+
xmlStreamWriter.writeStartDocument
|
195
|
+
xmlStreamWriter.writeStartElement("project".to_java)
|
196
|
+
|
197
|
+
writeElement(xmlStreamWriter,"groupId","org.hokiesuns.mavengemify")
|
198
|
+
writeElement(xmlStreamWriter,"artifactId","mavengemify")
|
199
|
+
writeElement(xmlStreamWriter,"modelVersion","4.0.0")
|
200
|
+
writeElement(xmlStreamWriter,"version","1.0-SNAPSHOT")
|
201
|
+
|
202
|
+
#Repositories
|
203
|
+
if @repositories.length > 0
|
204
|
+
xmlStreamWriter.writeStartElement("repositories".to_java)
|
205
|
+
@repositories.each_with_index {|repo,i|
|
206
|
+
xmlStreamWriter.writeStartElement("repository".to_java)
|
207
|
+
writeElement(xmlStreamWriter,"id","repository_#{i}")
|
208
|
+
writeElement(xmlStreamWriter,"url",repo)
|
209
|
+
xmlStreamWriter.writeEndElement #repository
|
210
|
+
}
|
211
|
+
xmlStreamWriter.writeEndElement #repositories
|
212
|
+
end
|
213
|
+
xmlStreamWriter.writeStartElement("dependencies".to_java)
|
214
|
+
|
215
|
+
|
216
|
+
File.read(mavenfile).each do |line|
|
217
|
+
group_id, artifact_id, version = line.sub(/jar\s+/, '').gsub(/[',]/,'').split(/[\s:]+/)
|
218
|
+
|
219
|
+
xmlStreamWriter.writeStartElement("dependency".to_java)
|
220
|
+
writeElement(xmlStreamWriter,"groupId",group_id)
|
221
|
+
writeElement(xmlStreamWriter,"artifactId",artifact_id)
|
222
|
+
writeElement(xmlStreamWriter,"version",version.to_s)
|
223
|
+
xmlStreamWriter.writeEndElement #dependency
|
224
|
+
|
225
|
+
end
|
226
|
+
|
227
|
+
xmlStreamWriter.writeEndElement #dependencies
|
228
|
+
|
229
|
+
xmlStreamWriter.writeEndElement #project
|
230
|
+
|
231
|
+
xmlStreamWriter.writeEndDocument
|
232
|
+
xmlStreamWriter.close
|
233
|
+
out.close
|
234
|
+
|
235
|
+
puts File.read pomfile
|
236
|
+
|
237
|
+
execute(["dependency:resolve","dependency:build-classpath"],pomfile,{"mdep.outputFile" => "cp.txt","mdep.fileSeparator"=>"/"})
|
238
|
+
|
239
|
+
FileUtils.mkdir_p(File.dirname(classpathfile))
|
240
|
+
File.open(classpathfile, 'w') do |f|
|
241
|
+
path_separator = java.lang.System.getProperty("path.separator").to_s
|
242
|
+
File.read(File.join(temp_dir,"cp.txt")).each do |line|
|
243
|
+
line.split(/#{path_separator}/).each do |path|
|
244
|
+
f.puts "require '#{path}'"
|
245
|
+
end
|
246
|
+
end
|
247
|
+
f.close
|
248
|
+
end
|
249
|
+
end
|
250
|
+
|
251
|
+
end
|
252
|
+
end
|