buildr4osgi 0.9.3 → 0.9.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/buildr4osgi.gemspec +1 -1
- data/lib/buildr4osgi/compile/external.rb +7 -5
- data/lib/buildr4osgi/eclipse/feature.rb +28 -14
- data/lib/buildr4osgi/eclipse/p2.rb +34 -67
- data/lib/buildr4osgi/osgi/packaging.rb +141 -15
- data/lib/buildr4osgi/osgi/project_extension.rb +27 -7
- data/lib/buildr4osgi/osgi/registry.rb +14 -1
- data/lib/buildr4osgi/osgi/resolving_strategies.rb +2 -2
- data/rakelib/all-in-one.rake +9 -2
- data/rakelib/checks.rake +1 -1
- data/rakelib/doc.rake +7 -0
- data/rakelib/package.rake +1 -1
- data/rakelib/release.rake +6 -6
- data/rakelib/rspec.rake +6 -3
- data/rakelib/setup.rake +14 -2
- data/rakelib/stage.rake +11 -5
- data/spec/compile/external_spec.rb +1 -1
- data/spec/eclipse/feature_spec.rb +64 -6
- data/spec/osgi/packaging_spec.rb +75 -1
- data/spec/tmp/remote/eclipse/org.eclipse.debug.ui/3.4.1.v20080811_r341/org.eclipse.debug.ui-3.4.1.v20080811_r341.jar +0 -0
- data/spec/tmp/remote/eclipse/org.eclipse.debug.ui/3.4.1.v20080811_r341/org.eclipse.debug.ui-3.4.1.v20080811_r341.pom +82 -0
- data/spec/tmp/remote/log4j/log4j/1.2.15/log4j-1.2.15.jar +0 -0
- data/spec/tmp/remote/log4j/log4j/1.2.15/log4j-1.2.15.pom +478 -0
- data/spec/tmp/remote/org/slf4j/jcl104-over-slf4j/1.5.8/jcl104-over-slf4j-1.5.8-sources.jar +0 -0
- data/spec/tmp/remote/org/slf4j/jcl104-over-slf4j/1.5.8/jcl104-over-slf4j-1.5.8.jar +0 -0
- data/spec/tmp/remote/org/slf4j/jcl104-over-slf4j/1.5.8/jcl104-over-slf4j-1.5.8.pom +30 -0
- data/spec/tmp/remote/org/slf4j/slf4j-api/1.5.8/slf4j-api-1.5.8-sources.jar +0 -0
- data/spec/tmp/remote/org/slf4j/slf4j-api/1.5.8/slf4j-api-1.5.8.jar +0 -0
- data/spec/tmp/remote/org/slf4j/slf4j-api/1.5.8/slf4j-api-1.5.8.pom +101 -0
- data/spec/tmp/remote/org/slf4j/slf4j-log4j12/1.5.8/slf4j-log4j12-1.5.8-sources.jar +0 -0
- data/spec/tmp/remote/org/slf4j/slf4j-log4j12/1.5.8/slf4j-log4j12-1.5.8.jar +0 -0
- data/spec/tmp/remote/org/slf4j/slf4j-log4j12/1.5.8/slf4j-log4j12-1.5.8.pom +56 -0
- metadata +15 -2
data/buildr4osgi.gemspec
CHANGED
@@ -32,12 +32,14 @@ module Buildr4OSGi
|
|
32
32
|
cmd_args << '-sourcepath' << source_paths.join(File::PATH_SEPARATOR) unless source_paths.empty?
|
33
33
|
cmd_args << '-d' << File.expand_path(target)
|
34
34
|
cmd_args += externalc_args
|
35
|
-
|
35
|
+
Tempfile.open("external") {|tmp|
|
36
|
+
tmp.write files_from_sources(sources).join(' ')
|
37
|
+
cmd_args << "@#{tmp.path}"
|
38
|
+
}
|
36
39
|
unless Buildr.application.options.dryrun
|
37
40
|
fail "ENV['EXTERNAL_COMPILER'] is not defined" if ENV['EXTERNAL_COMPILER'].nil?
|
38
|
-
javac_path =
|
39
|
-
|
40
|
-
final_args = ([javac_path,"-classpath", ecj_path, "org.eclipse.jdt.internal.compiler.batch.Main"] + cmd_args).join(' ')
|
41
|
+
javac_path = File.join(ENV['EXTERNAL_COMPILER'], "bin", "javac")
|
42
|
+
final_args = cmd_args.insert(0, javac_path).push('2>&1').join(' ')
|
41
43
|
trace(final_args)
|
42
44
|
info %x[#{final_args}]
|
43
45
|
fail 'Failed to compile, see errors above' unless $?.success?
|
@@ -49,7 +51,7 @@ module Buildr4OSGi
|
|
49
51
|
# See arg list here: http://publib.boulder.ibm.com/infocenter/rsahelp/v7r0m0/index.jsp?topic=/org.eclipse.jdt.doc.isv/guide/jdt_api_compile.htm
|
50
52
|
def externalc_args #:nodoc:
|
51
53
|
args = []
|
52
|
-
args << '-
|
54
|
+
args << '-nowarn' unless options[:warnings]
|
53
55
|
args << '-verbose' if Buildr.application.options.trace
|
54
56
|
args << '-g' if options[:debug]
|
55
57
|
args << '-deprecation' if options[:deprecation]
|
@@ -189,14 +189,18 @@ PROPERTIES
|
|
189
189
|
|
190
190
|
artifact = case
|
191
191
|
when plugin.is_a?(String)
|
192
|
-
|
192
|
+
if plugin.match /.*:.*:.*/ # is it an artifact string representation ?
|
193
|
+
Buildr::artifact(plugin)
|
194
|
+
else # treat it as a .jar
|
195
|
+
file(plugin)
|
196
|
+
end
|
193
197
|
when plugin.is_a?(Buildr::Project)
|
194
198
|
Buildr::artifact(plugin.package(:plugin))
|
195
199
|
else
|
196
200
|
plugin
|
197
201
|
end
|
198
|
-
info = adapt_plugin(artifact)
|
199
|
-
info[:unjarred] = @unjarred[plugin][:unjarred] unless @unjarred[plugin].nil?
|
202
|
+
info, as_dir = adapt_plugin(artifact)
|
203
|
+
info[:unjarred] = as_dir || @unjarred[plugin][:unjarred] unless @unjarred[plugin].nil?
|
200
204
|
resolved_plugins[info] = artifact
|
201
205
|
end
|
202
206
|
end
|
@@ -211,14 +215,19 @@ PROPERTIES
|
|
211
215
|
repackage = nil
|
212
216
|
sourceBundle = nil
|
213
217
|
if plugin.is_a? Buildr::Project
|
218
|
+
manifest = plugin.package(:plugin).manifest.main
|
219
|
+
if File.exists? plugin.path_to("META-INF/MANIFEST.MF")
|
220
|
+
manifest = ::Buildr::Packaging::Java::Manifest.parse(File.read(plugin.path_to("META-INF/MANIFEST.MF"))).main.merge(manifest)
|
221
|
+
end
|
214
222
|
size = File.size(plugin.package(:plugin).to_s)
|
215
|
-
name =
|
216
|
-
version =
|
223
|
+
name = manifest["Bundle-SymbolicName"]
|
224
|
+
version = manifest["Bundle-Version"]
|
217
225
|
group = plugin.group
|
218
|
-
sourceBundle =
|
226
|
+
sourceBundle = manifest["Eclipse-SourceBundle"]
|
227
|
+
as_dir = "dir" == manifest["Eclipse-BundleShape"].strip
|
219
228
|
else
|
220
229
|
plugin.invoke
|
221
|
-
if !File.exist?(plugin.to_s)
|
230
|
+
if !File.exist?(plugin.to_s) && plugin.classifier.to_s == 'sources'
|
222
231
|
#make sure the artifact was downloaded.
|
223
232
|
#if the artifact is for the sources feature and it could not be located,
|
224
233
|
#don't crash. should we put something in the manifest?
|
@@ -229,6 +238,7 @@ PROPERTIES
|
|
229
238
|
unless entry.nil?
|
230
239
|
manifest = Manifest.read(zip.read("META-INF/MANIFEST.MF"))
|
231
240
|
sourceBundle = manifest.first["Eclipse-SourceBundle"].keys.first.strip unless manifest.first["Eclipse-SourceBundle"].nil?
|
241
|
+
as_dir = "dir" == manifest.first["Eclipse-BundleShape"].keys.first.strip unless manifest.first["Eclipse-BundleShape"].nil?
|
232
242
|
if !manifest.first["Bundle-SymbolicName"].nil?
|
233
243
|
bundle = ::OSGi::Bundle.fromManifest(manifest, plugin.to_s)
|
234
244
|
unless bundle.nil?
|
@@ -238,10 +248,10 @@ PROPERTIES
|
|
238
248
|
end
|
239
249
|
end
|
240
250
|
end
|
241
|
-
group = plugin.to_hash[:group]
|
251
|
+
#group = plugin.to_hash[:group]
|
242
252
|
size = File.size(plugin.to_s)
|
243
253
|
end
|
244
|
-
if plugin.classifier.to_s == 'sources'
|
254
|
+
if plugin.is_a?(Artifact) && plugin.classifier.to_s == 'sources' && (sourceBundle.nil? || name.nil? || version.nil?)
|
245
255
|
# Try, if possible, to get the name and the version from the original binaries then.
|
246
256
|
runtimeArtifact = Buildr::artifact(plugin.to_hash.merge(:classifier => nil, :type => :jar))
|
247
257
|
runtimeManifest = extraPackagedManifest(runtimeArtifact)
|
@@ -259,8 +269,8 @@ PROPERTIES
|
|
259
269
|
warn "Could not determine the size of #{plugin}"
|
260
270
|
size ||= 0
|
261
271
|
end
|
262
|
-
return {:id => name, :
|
263
|
-
:"download-size" => size, :"install-size" => size, :unpack => false, :manifest => repackage}
|
272
|
+
return {:id => name, :version => version,
|
273
|
+
:"download-size" => size, :"install-size" => size, :unpack => false, :manifest => repackage}, as_dir
|
264
274
|
end
|
265
275
|
|
266
276
|
#returns the META-INF/MANIFEST.MF file for something that
|
@@ -318,16 +328,20 @@ PROPERTIES
|
|
318
328
|
|
319
329
|
artifact = case
|
320
330
|
when plugin.is_a?(String)
|
321
|
-
|
331
|
+
if plugin.match /.*:.*:.*/ # is it an artifact string representation ?
|
332
|
+
Buildr::artifact(plugin)
|
333
|
+
else # treat it as a .jar
|
334
|
+
file(plugin)
|
335
|
+
end
|
322
336
|
when plugin.is_a?(Buildr::Project)
|
323
337
|
Buildr::artifact(plugin.package(:sources))
|
324
338
|
else
|
325
339
|
plugin
|
326
340
|
end
|
327
341
|
artifact = Buildr::artifact(artifact.to_hash.merge(:classifier => "sources")) if artifact.is_a?(Buildr::Artifact)
|
328
|
-
info = adapt_plugin(artifact)
|
342
|
+
info, as_dir = adapt_plugin(artifact)
|
329
343
|
if !info.nil?
|
330
|
-
info[:unjarred] =
|
344
|
+
info[:unjarred] = as_dir || (!@unjarred[plugin].nil? && @unjarred[plugin][:unjarred])
|
331
345
|
resolved_plugins[info] = artifact
|
332
346
|
end
|
333
347
|
end
|
@@ -22,7 +22,7 @@ module Buildr4OSGi
|
|
22
22
|
def package_as_p2_from_site(file_name)
|
23
23
|
task = UpdateSitePublisherTask.define_task(file_name)
|
24
24
|
task.send :associate_with, self
|
25
|
-
|
25
|
+
task
|
26
26
|
end
|
27
27
|
|
28
28
|
def package_as_p2_from_site_spec(spec)
|
@@ -32,76 +32,41 @@ module Buildr4OSGi
|
|
32
32
|
class UpdateSitePublisherTask < ::Buildr::Packaging::Java::JarTask
|
33
33
|
|
34
34
|
attr_accessor :site
|
35
|
-
|
36
|
-
|
35
|
+
|
37
36
|
def initialize(*args) #:nodoc:
|
38
37
|
super
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
#
|
44
|
-
#
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
# unzip it wherever it is.
|
55
|
-
# then invoke it on the cmd line `java -jar #{launcherLocation} -application ... -source #{siteLocation}`
|
56
|
-
#we need to give the ability to define an eclipse home that could be invoked as a replacement to this.
|
57
|
-
# p2installer = Buildr::artifact("org.eclipse.platform:eclipse-platform:tgz:3.6M3-linux-gtk")
|
58
|
-
# p2installer.invoke
|
59
|
-
# p2installerHome = File.join(project.base_dir, "target", "p2installer")
|
60
|
-
# Buildr::unzip(p2installerHome => p2installer).extract
|
61
|
-
# p2installerHome = File.join(p2installerHome, "eclipse")
|
62
|
-
|
63
|
-
#add the missing publisher plugin:
|
64
|
-
# p2publisher = Buildr::artifact("org.eclipse.equinox.p2:org.eclipse.equinox.p2.publisher:jar:1.1.0.v20090831")
|
65
|
-
# p2publisher.invoke
|
66
|
-
# cp p2publisher.to_s, File.join(p2installerHome, "plugins/#{p2publisher.id}_#{p2publisher.version}.jar")
|
38
|
+
|
39
|
+
enhance do |p2_task|
|
40
|
+
fail "The p2 task needs to be associated with a site " unless site
|
41
|
+
p2_task.enhance [site]
|
42
|
+
#add a prerequisite to the list of prerequisites, gives a chance
|
43
|
+
#for other prerequisites to be placed before this block is executed.
|
44
|
+
p2_task.enhance do
|
45
|
+
targetP2Repo = File.join(project.base_dir, "target", "p2repository")
|
46
|
+
mkpath targetP2Repo
|
47
|
+
Buildr::unzip(targetP2Repo=>project.package(:site).to_s).extract
|
48
|
+
eclipseSDK = Buildr::artifact("org.eclipse:eclipse-SDK:zip:3.6M3-win32")
|
49
|
+
eclipseSDK.invoke
|
50
|
+
Buildr::unzip(File.dirname(eclipseSDK.to_s) => eclipseSDK.to_s).extract
|
51
|
+
|
52
|
+
launcherPlugin = Dir.glob("#{File.dirname(eclipseSDK.to_s)}/eclipse/plugins/org.eclipse.equinox.launcher_*")[0]
|
67
53
|
|
68
|
-
|
69
|
-
|
54
|
+
cmdline <<-CMD
|
55
|
+
java -jar #{launcherPlugin} -application org.eclipse.equinox.p2.publisher.UpdateSitePublisher
|
56
|
+
-metadataRepository file:#{targetP2Repo}
|
57
|
+
-artifactRepository file:#{targetP2Repo}
|
58
|
+
-metadataRepositoryName #{project.name}_#{project.version}
|
59
|
+
-artifactRepositoryName #{project.name}_#{project.version}
|
60
|
+
-source #{targetP2Repo}
|
61
|
+
-configs gtk.linux.x86
|
62
|
+
-publishArtifacts
|
63
|
+
-clean -consoleLog
|
64
|
+
CMD
|
65
|
+
info "Invoking P2's metadata generation: #{cmdline}"
|
66
|
+
system cmdline
|
70
67
|
|
71
|
-
|
72
|
-
|
73
|
-
mkpath targetP2Repo
|
74
|
-
Buildr::unzip(targetP2Repo=>siteWithoutP2.to_s).extract
|
75
|
-
eclipseSDK = Buildr::artifact("org.eclipse:eclipse-SDK:zip:3.6M3-win32")
|
76
|
-
eclipseSDK.invoke
|
77
|
-
p2installerHome = File.dirname eclipseSDK.to_s#"~/proj/eclipses/eclipse-SDK-3.6M3"
|
78
|
-
Buildr::unzip( p2installerHome => eclipseSDK.to_s ).extract
|
79
|
-
p2installerHome += "/eclipse"
|
80
|
-
launcherPlugin = Dir.glob("#{p2installerHome}/plugins/org.eclipse.equinox.launcher_*")[0]
|
81
|
-
|
82
|
-
application = "org.eclipse.equinox.p2.publisher.UpdateSitePublisher"
|
83
|
-
#this is where the artifacts are published.
|
84
|
-
metadataRepository_url = "file:#{targetP2Repo}"
|
85
|
-
artifactRepository_url = metadataRepository_url
|
86
|
-
metadataRepository_name = project.id + "_" + project.version
|
87
|
-
artifactRepository_name = project.id + "_" + project.version
|
88
|
-
source_absolutePath = targetP2Repo
|
89
|
-
|
90
|
-
cmdline = "java -jar #{launcherPlugin} -application #{application} \
|
91
|
-
-metadataRepository #{metadataRepository_url} \
|
92
|
-
-artifactRepository #{artifactRepository_url} \
|
93
|
-
-metadataRepositoryName #{metadataRepository_name} \
|
94
|
-
-artifactRepositoryName #{artifactRepository_name} \
|
95
|
-
-source #{source_absolutePath} \
|
96
|
-
-configs gtk.linux.x86 \
|
97
|
-
-publishArtifacts \
|
98
|
-
-clean -consoleLog"
|
99
|
-
puts "Invoking P2's metadata generation: #{cmdline}"
|
100
|
-
result = `#{cmdline}`
|
101
|
-
puts result
|
102
|
-
|
103
|
-
include targetP2Repo, :as=>"."
|
104
|
-
|
68
|
+
include targetP2Repo, :as => "."
|
69
|
+
end
|
105
70
|
end
|
106
71
|
end
|
107
72
|
|
@@ -123,6 +88,8 @@ module Buildr4OSGi
|
|
123
88
|
|
124
89
|
private
|
125
90
|
|
91
|
+
attr_reader :project
|
92
|
+
|
126
93
|
def associate_with(project)
|
127
94
|
@project = project
|
128
95
|
end
|
@@ -103,6 +103,23 @@ module OSGi
|
|
103
103
|
# Artifacts to include under /lib.
|
104
104
|
attr_accessor :libs
|
105
105
|
|
106
|
+
# Calls to this method will make the bundle use
|
107
|
+
# the bundle manifest version if defined.
|
108
|
+
# An exception will be raised if no manifest file is present or no Bundle-Version is present in it.
|
109
|
+
#
|
110
|
+
#
|
111
|
+
def use_bundle_version
|
112
|
+
manifest_location = File.join(@project.base_dir, "META-INF", "MANIFEST.MF")
|
113
|
+
if File.exists?(manifest_location)
|
114
|
+
read_m = ::Buildr::Packaging::Java::Manifest.parse(File.read(manifest_location)).main
|
115
|
+
raise "Cannot use use_bundle_version if no Bundle-Version header is specified in the manifest" if read_m["Bundle-Version"].nil?
|
116
|
+
manifest["Bundle-Version"] = read_m["Bundle-Version"]
|
117
|
+
else
|
118
|
+
raise "Cannot use use_bundle_version if no manifest is present in the project"
|
119
|
+
end
|
120
|
+
process_qualifier
|
121
|
+
end
|
122
|
+
|
106
123
|
def initialize(*args) #:nodoc:
|
107
124
|
super
|
108
125
|
@libs = []
|
@@ -116,6 +133,89 @@ module OSGi
|
|
116
133
|
end
|
117
134
|
end
|
118
135
|
|
136
|
+
def process_qualifier
|
137
|
+
if manifest["Bundle-Version"].match /\.qualifier$/
|
138
|
+
manifest["Bundle-Version"] = "#{$~.pre_match}.#{Time.now.strftime("%y%m%d%H%M%S")}"
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
private
|
143
|
+
|
144
|
+
def associate_with(project)
|
145
|
+
@project = project
|
146
|
+
end
|
147
|
+
|
148
|
+
end
|
149
|
+
|
150
|
+
class RootFilter < Buildr::Filter
|
151
|
+
|
152
|
+
def pattern_match(file, pattern)
|
153
|
+
case
|
154
|
+
when pattern.is_a?(Regexp)
|
155
|
+
return file.match(pattern)
|
156
|
+
when pattern.is_a?(String)
|
157
|
+
return File.fnmatch(pattern, file)
|
158
|
+
when pattern.is_a?(Proc)
|
159
|
+
return pattern.call(file)
|
160
|
+
else
|
161
|
+
raise "Cannot interpret pattern #{pattern}"
|
162
|
+
end
|
163
|
+
end
|
164
|
+
# :call-seq:
|
165
|
+
# run => boolean
|
166
|
+
#
|
167
|
+
# Runs the filter.
|
168
|
+
def run
|
169
|
+
sources.each { |source| raise "Source directory #{source} doesn't exist" unless File.exist?(source.to_s) }
|
170
|
+
raise 'No target directory specified, where am I going to copy the files to?' if target.nil?
|
171
|
+
|
172
|
+
copy_map = sources.flatten.map(&:to_s).inject({}) do |map, source|
|
173
|
+
files = Util.recursive_with_dot_files(source).
|
174
|
+
map { |file| Util.relative_path(file, source) }.
|
175
|
+
select { |file| @include.empty? || @include.any? { |pattern| pattern_match(file, pattern) } }.
|
176
|
+
reject { |file| @exclude.any? { |pattern| pattern_match(file, pattern) } }
|
177
|
+
files.each do |file|
|
178
|
+
src, dest = File.expand_path(file, source), File.expand_path(file, target.to_s)
|
179
|
+
map[file] = src if !File.exist?(dest) || File.stat(src).mtime >= File.stat(dest).mtime
|
180
|
+
end
|
181
|
+
map
|
182
|
+
end
|
183
|
+
|
184
|
+
mkpath target.to_s
|
185
|
+
return false if copy_map.empty?
|
186
|
+
|
187
|
+
copy_map.each do |path, source|
|
188
|
+
dest = File.expand_path(path, target.to_s)
|
189
|
+
if File.directory?(source)
|
190
|
+
mkpath dest
|
191
|
+
else
|
192
|
+
mkpath File.dirname(dest)
|
193
|
+
if @mapper.mapper_type
|
194
|
+
mapped = @mapper.transform(File.open(source, 'rb') { |file| file.read }, path)
|
195
|
+
File.open(dest, 'wb') { |file| file.write mapped }
|
196
|
+
else # no mapping
|
197
|
+
cp source, dest
|
198
|
+
File.chmod(0664, dest)
|
199
|
+
end
|
200
|
+
end
|
201
|
+
end
|
202
|
+
touch target.to_s
|
203
|
+
true
|
204
|
+
end
|
205
|
+
|
206
|
+
end
|
207
|
+
|
208
|
+
# A copy/paste of the ResourcesTask specifically modified for the job
|
209
|
+
# of including resources located at the root of the project.
|
210
|
+
#
|
211
|
+
class RootResourcesTask < Buildr::ResourcesTask
|
212
|
+
|
213
|
+
def initialize(*args) #:nodoc:
|
214
|
+
super
|
215
|
+
@filter = RootFilter.new
|
216
|
+
@filter.using Buildr.settings.profile['filter'] if Hash === Buildr.settings.profile['filter']
|
217
|
+
end
|
218
|
+
|
119
219
|
end
|
120
220
|
|
121
221
|
module ActAsOSGiBundle
|
@@ -131,6 +231,7 @@ module OSGi
|
|
131
231
|
end
|
132
232
|
|
133
233
|
def package_as_bundle(file_name)
|
234
|
+
|
134
235
|
task = BundleTask.define_task(file_name).tap do |plugin|
|
135
236
|
# Custom resource task to grab everything located at the root of the project
|
136
237
|
# while leaving the user also specify a resources directory, in case we are in face
|
@@ -138,30 +239,55 @@ module OSGi
|
|
138
239
|
# This is a bit hacky and not fully respecting the project layout, so we might find some alternative later
|
139
240
|
# to do the job by extending the layout object, and maybe making this resource task available as a subclass
|
140
241
|
# of ResourcesTask.
|
141
|
-
p_r =
|
142
|
-
p_r.send :associate_with,
|
143
|
-
p_r.from(
|
144
|
-
p_r.exclude(
|
145
|
-
|
146
|
-
|
242
|
+
p_r = RootResourcesTask.define_task(:resources_root)
|
243
|
+
p_r.send :associate_with, self, :root
|
244
|
+
p_r.filter.from(base_dir).exclude(/^\..*/).exclude("*.jar").exclude("*.java").exclude("build.properties")
|
245
|
+
p_r.exclude(lambda {|file|
|
246
|
+
binaries_base_folder = project.compile.target.to_s.match(Regexp.escape(project.base_dir + File::SEPARATOR)) ? $~.post_match : project.compile.target.to_s
|
247
|
+
file.match(Regexp.new(Regexp.escape binaries_base_folder)) || project.compile.sources.detect {|src_folder|
|
248
|
+
relative_folder = src_folder.match(Regexp.escape(project.base_dir)) ? $~.post_match : src_folder
|
249
|
+
true if file.match(Regexp.new(Regexp.escape(relative_folder.scan(/\w+/).first)))
|
250
|
+
}
|
251
|
+
})
|
252
|
+
p_r.filter.exclude(/target/)
|
253
|
+
p_r.filter.exclude(/report/)
|
147
254
|
|
255
|
+
properties = ResourcesTask.define_task(:resources_src)
|
256
|
+
properties.send :associate_with, self, :resources_src
|
148
257
|
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
258
|
+
unless compile.nil?
|
259
|
+
compile.sources.each {|src_folder|
|
260
|
+
properties.from(src_folder).exclude(".*").exclude("*.java")
|
261
|
+
}
|
262
|
+
end
|
153
263
|
|
154
264
|
manifest_location = File.join(project.base_dir, "META-INF", "MANIFEST.MF")
|
155
|
-
manifest =
|
265
|
+
manifest = self.manifest
|
156
266
|
if File.exists?(manifest_location)
|
157
267
|
read_m = ::Buildr::Packaging::Java::Manifest.parse(File.read(manifest_location)).main
|
158
|
-
manifest =
|
268
|
+
manifest = self.manifest.merge(read_m)
|
159
269
|
end
|
160
|
-
|
161
|
-
manifest["Bundle-
|
270
|
+
|
271
|
+
manifest["Bundle-Version"] = self.version # the version of the bundle packaged is ALWAYS the version of the project.
|
272
|
+
# You can override it later with use_bundle_version
|
273
|
+
|
274
|
+
|
275
|
+
manifest["Bundle-SymbolicName"] ||= self.name.split(":").last # if it was resetted to nil, we force the id to be added back.
|
276
|
+
|
162
277
|
plugin.with :manifest=> manifest, :meta_inf=>meta_inf
|
163
|
-
|
278
|
+
unless manifest["Bundle-Classpath"].nil? || compile.target.nil?
|
279
|
+
entry = manifest["Bundle-Classpath"].split(",").first
|
280
|
+
plugin.path(entry).include compile.target, :as=>'.'
|
281
|
+
plugin.path(entry).include properties.target, :as=>'.' unless properties.target.nil?
|
282
|
+
plugin.with [resources.target, p_r.target].compact
|
283
|
+
else
|
284
|
+
plugin.with [compile.target, resources.target, p_r.target, properties.target].compact
|
285
|
+
end
|
286
|
+
|
287
|
+
plugin.process_qualifier
|
164
288
|
end
|
289
|
+
task.send :associate_with, self
|
290
|
+
task
|
165
291
|
end
|
166
292
|
|
167
293
|
def package_as_bundle_spec(spec) #:nodoc:
|