buildr 1.3.5-x86-mswin32 → 1.4.0-x86-mswin32
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/CHANGELOG +153 -8
- data/README.rdoc +1 -1
- data/addon/buildr/antlr.rb +5 -5
- data/addon/buildr/drb.rb +18 -18
- data/addon/buildr/hibernate.rb +18 -14
- data/addon/buildr/javacc.rb +4 -4
- data/addon/buildr/jetty.rb +5 -5
- data/addon/buildr/nailgun.rb +23 -23
- data/addon/buildr/openjpa.rb +1 -1
- data/addon/buildr/org/apache/buildr/BuildrNail$Main.class +0 -0
- data/addon/buildr/org/apache/buildr/BuildrNail.class +0 -0
- data/addon/buildr/org/apache/buildr/JettyWrapper$1.class +0 -0
- data/addon/buildr/org/apache/buildr/JettyWrapper$BuildrHandler.class +0 -0
- data/addon/buildr/org/apache/buildr/JettyWrapper.class +0 -0
- data/addon/buildr/protobuf.rb +75 -0
- data/addon/buildr/xmlbeans.rb +5 -5
- data/buildr.buildfile +2 -2
- data/buildr.gemspec +8 -7
- data/doc/_layouts/default.html +2 -2
- data/doc/artifacts.textile +4 -4
- data/doc/building.textile +35 -3
- data/doc/contributing.textile +5 -0
- data/doc/download.textile +16 -5
- data/doc/extending.textile +38 -12
- data/doc/installing.textile +6 -5
- data/doc/languages.textile +182 -42
- data/doc/more_stuff.textile +2 -2
- data/doc/packaging.textile +14 -15
- data/doc/projects.textile +7 -2
- data/doc/quick_start.textile +4 -4
- data/doc/scripts/buildr-git.rb +63 -63
- data/doc/scripts/gitflow.rb +21 -21
- data/doc/settings_profiles.textile +9 -2
- data/doc/testing.textile +16 -5
- data/etc/KEYS +38 -0
- data/lib/buildr.rb +1 -1
- data/lib/buildr/core.rb +1 -0
- data/lib/buildr/core/application.rb +33 -27
- data/lib/buildr/core/build.rb +41 -28
- data/lib/buildr/core/cc.rb +172 -0
- data/lib/buildr/core/checks.rb +1 -1
- data/lib/buildr/core/common.rb +7 -6
- data/lib/buildr/core/compile.rb +7 -8
- data/lib/buildr/core/doc.rb +263 -0
- data/lib/buildr/core/environment.rb +6 -6
- data/lib/buildr/core/filter.rb +77 -35
- data/lib/buildr/core/generate.rb +7 -7
- data/lib/buildr/core/help.rb +1 -1
- data/lib/buildr/core/osx.rb +6 -6
- data/lib/buildr/core/progressbar.rb +4 -4
- data/lib/buildr/core/project.rb +144 -36
- data/lib/buildr/core/shell.rb +34 -34
- data/lib/buildr/core/test.rb +89 -20
- data/lib/buildr/core/transports.rb +8 -7
- data/lib/buildr/core/util.rb +77 -23
- data/lib/buildr/groovy/bdd.rb +5 -5
- data/lib/buildr/groovy/compiler.rb +19 -15
- data/lib/buildr/groovy/shell.rb +6 -6
- data/lib/buildr/ide/eclipse.rb +148 -75
- data/lib/buildr/ide/eclipse/java.rb +3 -3
- data/lib/buildr/ide/eclipse/plugin.rb +8 -5
- data/lib/buildr/ide/eclipse/scala.rb +4 -2
- data/lib/buildr/ide/idea.rb +2 -2
- data/lib/buildr/ide/idea7x.rb +23 -4
- data/lib/buildr/java.rb +1 -0
- data/lib/buildr/java/ant.rb +4 -4
- data/lib/buildr/java/bdd.rb +51 -54
- data/lib/buildr/java/cobertura.rb +57 -35
- data/lib/buildr/java/commands.rb +14 -5
- data/lib/buildr/java/compiler.rb +3 -217
- data/lib/buildr/java/deprecated.rb +4 -4
- data/lib/buildr/java/doc.rb +70 -0
- data/lib/buildr/java/emma.rb +22 -22
- data/lib/buildr/java/jruby.rb +4 -4
- data/lib/buildr/java/jtestr_runner.rb.erb +27 -25
- data/lib/buildr/java/org/apache/buildr/JavaTestFilter.class +0 -0
- data/lib/buildr/java/org/apache/buildr/JavaTestFilter.java +8 -3
- data/lib/buildr/java/packaging.rb +30 -29
- data/lib/buildr/java/pom.rb +4 -4
- data/lib/buildr/java/rjb.rb +6 -6
- data/lib/buildr/java/test_result.rb +61 -85
- data/lib/buildr/java/tests.rb +44 -27
- data/lib/buildr/java/version_requirement.rb +8 -8
- data/lib/buildr/packaging/archive.rb +55 -22
- data/lib/buildr/packaging/artifact.rb +75 -36
- data/lib/buildr/packaging/artifact_namespace.rb +90 -78
- data/lib/buildr/packaging/artifact_search.rb +5 -5
- data/lib/buildr/packaging/gems.rb +11 -7
- data/lib/buildr/packaging/package.rb +10 -7
- data/lib/buildr/packaging/tar.rb +14 -14
- data/lib/buildr/packaging/version_requirement.rb +30 -10
- data/lib/buildr/packaging/ziptask.rb +51 -13
- data/lib/buildr/scala.rb +1 -0
- data/lib/buildr/scala/bdd.rb +25 -20
- data/lib/buildr/scala/compiler.rb +87 -40
- data/lib/buildr/scala/doc.rb +106 -0
- data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.class +0 -0
- data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.java +57 -0
- data/lib/buildr/scala/shell.rb +14 -9
- data/lib/buildr/scala/tests.rb +33 -26
- data/lib/buildr/shell.rb +33 -33
- data/rakelib/all-in-one.rake +113 -0
- data/rakelib/checks.rake +1 -1
- data/rakelib/doc.rake +7 -0
- data/rakelib/package.rake +1 -1
- data/rakelib/release.rake +9 -6
- data/rakelib/rspec.rake +26 -7
- data/rakelib/setup.rake +15 -3
- data/rakelib/stage.rake +18 -11
- data/spec/addon/drb_spec.rb +25 -25
- data/spec/core/application_spec.rb +111 -21
- data/spec/core/build_spec.rb +16 -15
- data/spec/core/cc_spec.rb +174 -0
- data/spec/core/checks_spec.rb +34 -34
- data/spec/core/common_spec.rb +51 -5
- data/spec/core/compile_spec.rb +89 -14
- data/spec/core/extension_spec.rb +127 -19
- data/spec/core/generate_spec.rb +2 -2
- data/spec/core/project_spec.rb +10 -10
- data/spec/core/test_spec.rb +144 -35
- data/spec/core/transport_spec.rb +8 -8
- data/spec/core/util_spec.rb +63 -5
- data/spec/groovy/bdd_spec.rb +5 -5
- data/spec/groovy/compiler_spec.rb +29 -18
- data/spec/ide/eclipse_spec.rb +185 -9
- data/spec/ide/idea7x_spec.rb +22 -10
- data/spec/java/ant_spec.rb +9 -5
- data/spec/java/bdd_spec.rb +29 -37
- data/spec/java/cobertura_spec.rb +12 -12
- data/spec/java/commands_spec.rb +34 -0
- data/spec/java/compiler_spec.rb +53 -53
- data/spec/java/emma_spec.rb +11 -11
- data/spec/java/java_spec.rb +10 -10
- data/spec/java/packaging_spec.rb +67 -20
- data/spec/java/test_coverage_helper.rb +18 -18
- data/spec/java/tests_spec.rb +13 -9
- data/spec/packaging/archive_spec.rb +187 -20
- data/spec/packaging/artifact_namespace_spec.rb +172 -83
- data/spec/packaging/artifact_spec.rb +83 -18
- data/spec/packaging/packaging_spec.rb +41 -14
- data/spec/sandbox.rb +23 -12
- data/spec/scala/bdd_spec.rb +13 -8
- data/spec/scala/compiler_spec.rb +18 -13
- data/spec/scala/scala.rb +3 -3
- data/spec/scala/tests_spec.rb +46 -24
- data/spec/spec_helpers.rb +28 -10
- data/spec/version_requirement_spec.rb +25 -11
- metadata +149 -133
- data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner$.class +0 -0
- data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.scala +0 -35
- data/rakelib/stage.rake~ +0 -213
@@ -15,11 +15,11 @@
|
|
15
15
|
|
16
16
|
|
17
17
|
module Buildr
|
18
|
-
|
18
|
+
|
19
19
|
#
|
20
20
|
# See ArtifactNamespace#need
|
21
21
|
class VersionRequirement
|
22
|
-
|
22
|
+
|
23
23
|
CMP_PROCS = Gem::Requirement::OPS.dup
|
24
24
|
CMP_REGEX = Gem::Requirement::OP_RE.dup
|
25
25
|
CMP_CHARS = CMP_PROCS.keys.join
|
@@ -31,16 +31,16 @@ module Buildr
|
|
31
31
|
def version?(str)
|
32
32
|
/^\s*[#{VER_CHARS}]+\s*$/ === str
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
# is +str+ a version requirement?
|
36
36
|
def requirement?(str)
|
37
37
|
/[#{BOOL_CHARS}#{CMP_CHARS}\(\)]/ === str
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
# :call-seq:
|
41
41
|
# VersionRequirement.create(" >1 <2 !(1.5) ") -> requirement
|
42
42
|
#
|
43
|
-
# parse the +str+ requirement
|
43
|
+
# parse the +str+ requirement
|
44
44
|
def create(str)
|
45
45
|
instance_eval normalize(str)
|
46
46
|
rescue StandardError => e
|
@@ -61,7 +61,7 @@ module Buildr
|
|
61
61
|
vreq.negative = !vreq.negative
|
62
62
|
vreq
|
63
63
|
end
|
64
|
-
|
64
|
+
|
65
65
|
def normalize(str)
|
66
66
|
str = str.strip
|
67
67
|
if str[/[^\s\(\)#{BOOL_CHARS + VER_CHARS + CMP_CHARS}]/]
|
@@ -147,7 +147,7 @@ module Buildr
|
|
147
147
|
def &(other)
|
148
148
|
operation(:&, other)
|
149
149
|
end
|
150
|
-
|
150
|
+
|
151
151
|
# return the parsed expression
|
152
152
|
def to_s
|
153
153
|
str = requirements.map(&:to_s).join(" " + @op.to_s + " ").to_s
|
@@ -160,7 +160,7 @@ module Buildr
|
|
160
160
|
protected
|
161
161
|
attr_reader :requirements, :op
|
162
162
|
def operation(op, other)
|
163
|
-
@op ||= op
|
163
|
+
@op ||= op
|
164
164
|
if negative == other.negative && @op == op && other.requirements.size == 1
|
165
165
|
@requirements << other.requirements.first
|
166
166
|
self
|
@@ -25,7 +25,7 @@ module Buildr
|
|
25
25
|
|
26
26
|
# Returns the archive from this path.
|
27
27
|
attr_reader :root
|
28
|
-
|
28
|
+
|
29
29
|
def initialize(root, path)
|
30
30
|
@root = root
|
31
31
|
@path = path.empty? ? path : "#{path}/"
|
@@ -41,10 +41,13 @@ module Buildr
|
|
41
41
|
if File.directory?(path)
|
42
42
|
in_directory path do |file, rel_path|
|
43
43
|
dest = "#{@path}#{rel_path}"
|
44
|
-
|
45
|
-
|
44
|
+
unless excluded?(dest)
|
45
|
+
trace "Adding #{dest}"
|
46
|
+
file_map[dest] = file
|
47
|
+
end
|
46
48
|
end
|
47
|
-
|
49
|
+
end
|
50
|
+
unless File.basename(path) == "."
|
48
51
|
trace "Adding #{@path}#{File.basename(path)}"
|
49
52
|
file_map["#{@path}#{File.basename(path)}"] = path
|
50
53
|
end
|
@@ -61,7 +64,8 @@ module Buildr
|
|
61
64
|
# include(*files, :merge=>true) => self
|
62
65
|
def include(*args)
|
63
66
|
options = args.pop if Hash === args.last
|
64
|
-
files = args
|
67
|
+
files = to_artifacts(args)
|
68
|
+
raise 'AchiveTask.include() values should not include nil' if files.include? nil
|
65
69
|
|
66
70
|
if options.nil? || options.empty?
|
67
71
|
@includes.include *files.flatten
|
@@ -74,7 +78,8 @@ module Buildr
|
|
74
78
|
include_as files.first.to_s, options[:as]
|
75
79
|
elsif options[:from]
|
76
80
|
raise 'You can only use the :from option in combination with the :path option' unless options.size == 1
|
77
|
-
raise 'You
|
81
|
+
raise 'You cannot use the :from option with file names' unless files.empty?
|
82
|
+
fail 'AchiveTask.include() :from value should not be nil' if [options[:from]].flatten.include? nil
|
78
83
|
[options[:from]].flatten.each { |path| include_as path.to_s, '.' }
|
79
84
|
elsif options[:merge]
|
80
85
|
raise 'You can only use the :merge option in combination with the :path option' unless options.size == 1
|
@@ -90,7 +95,7 @@ module Buildr
|
|
90
95
|
# :call-seq:
|
91
96
|
# exclude(*files) => self
|
92
97
|
def exclude(*files)
|
93
|
-
files = files
|
98
|
+
files = to_artifacts(files)
|
94
99
|
@excludes |= files
|
95
100
|
@excludes |= files.reject { |f| f =~ /\*$/ }.map { |f| "#{f}/*" }
|
96
101
|
self
|
@@ -101,7 +106,7 @@ module Buildr
|
|
101
106
|
# merge(*files, :path=>name) => Merge
|
102
107
|
def merge(*args)
|
103
108
|
options = Hash === args.last ? args.pop : {}
|
104
|
-
files = args
|
109
|
+
files = to_artifacts(args)
|
105
110
|
rake_check_options options, :path
|
106
111
|
raise ArgumentError, "Expected at least one file to merge" if files.empty?
|
107
112
|
path = options[:path] || @path
|
@@ -172,7 +177,31 @@ module Buildr
|
|
172
177
|
|
173
178
|
protected
|
174
179
|
|
175
|
-
|
180
|
+
# Convert objects to artifacts, where applicable
|
181
|
+
def to_artifacts(files)
|
182
|
+
files.flatten.inject([]) do |set, file|
|
183
|
+
case file
|
184
|
+
when ArtifactNamespace
|
185
|
+
set |= file.artifacts
|
186
|
+
when Symbol, Hash
|
187
|
+
set |= [artifact(file)]
|
188
|
+
when /([^:]+:){2,4}/ # A spec as opposed to a file name.
|
189
|
+
set |= [Buildr.artifact(file)]
|
190
|
+
when Project
|
191
|
+
set |= Buildr.artifacts(file.packages)
|
192
|
+
when Rake::Task
|
193
|
+
set |= [file]
|
194
|
+
when Struct
|
195
|
+
set |= Buildr.artifacts(file.values)
|
196
|
+
else
|
197
|
+
# non-artifacts passed as-is; in particular, String paths are
|
198
|
+
# unmodified since Rake FileTasks don't use absolute paths
|
199
|
+
set |= [file]
|
200
|
+
end
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
204
|
+
def include_as(source, as)
|
176
205
|
@sources << proc { source }
|
177
206
|
@actions << proc do |file_map|
|
178
207
|
file = source.to_s
|
@@ -182,10 +211,13 @@ module Buildr
|
|
182
211
|
path = rel_path.split('/')[1..-1]
|
183
212
|
path.unshift as unless as == '.'
|
184
213
|
dest = "#{@path}#{path.join('/')}"
|
185
|
-
|
186
|
-
|
214
|
+
unless excluded?(dest)
|
215
|
+
trace "Adding #{dest}"
|
216
|
+
file_map[dest] = file
|
217
|
+
end
|
187
218
|
end
|
188
|
-
|
219
|
+
end
|
220
|
+
unless as == "."
|
189
221
|
trace "Adding #{@path}#{as}"
|
190
222
|
file_map["#{@path}#{as}"] = file
|
191
223
|
end
|
@@ -299,13 +331,13 @@ module Buildr
|
|
299
331
|
|
300
332
|
# :call-seq:
|
301
333
|
# clean => self
|
302
|
-
#
|
303
|
-
# Removes all previously added content from this archive.
|
334
|
+
#
|
335
|
+
# Removes all previously added content from this archive.
|
304
336
|
# Use this method if you want to remove default content from a package.
|
305
337
|
# For example, package(:jar) by default includes compiled classes and resources,
|
306
338
|
# using this method, you can create an empty jar and afterwards add the
|
307
339
|
# desired content to it.
|
308
|
-
#
|
340
|
+
#
|
309
341
|
# package(:jar).clean.include path_to('desired/content')
|
310
342
|
def clean
|
311
343
|
@paths = { '' => Path.new(self, '') }
|
@@ -346,20 +378,21 @@ module Buildr
|
|
346
378
|
# zip(..).include('foo.zip', :merge=>true).include('bar.zip')
|
347
379
|
# You can also use the method #merge.
|
348
380
|
def include(*files)
|
349
|
-
|
381
|
+
fail "AchiveTask.include() called with nil values" if files.include? nil
|
382
|
+
@paths[''].include *files if files.compact.size > 0
|
350
383
|
self
|
351
|
-
end
|
384
|
+
end
|
352
385
|
alias :add :include
|
353
386
|
alias :<< :include
|
354
|
-
|
387
|
+
|
355
388
|
# :call-seq:
|
356
389
|
# exclude(*files) => self
|
357
|
-
#
|
390
|
+
#
|
358
391
|
# Excludes files and returns self. Can be used in combination with include to prevent some files from being included.
|
359
392
|
def exclude(*files)
|
360
393
|
@paths[''].exclude *files
|
361
394
|
self
|
362
|
-
end
|
395
|
+
end
|
363
396
|
|
364
397
|
# :call-seq:
|
365
398
|
# merge(*files) => Merge
|
@@ -372,7 +405,7 @@ module Buildr
|
|
372
405
|
# zip(..).merge('src.zip').include('module1/*')
|
373
406
|
def merge(*files)
|
374
407
|
@paths[''].merge *files
|
375
|
-
end
|
408
|
+
end
|
376
409
|
|
377
410
|
# :call-seq:
|
378
411
|
# path(name) => Path
|
@@ -433,7 +466,7 @@ module Buildr
|
|
433
466
|
@prerequisites |= @paths.collect { |name, path| path.sources }.flatten
|
434
467
|
super
|
435
468
|
end
|
436
|
-
|
469
|
+
|
437
470
|
def needed? #:nodoc:
|
438
471
|
return true unless File.exist?(name)
|
439
472
|
# You can do something like:
|
@@ -41,9 +41,27 @@ module Buildr
|
|
41
41
|
|
42
42
|
class << self
|
43
43
|
private
|
44
|
+
|
45
|
+
# :stopdoc:
|
44
46
|
def included(mod)
|
45
47
|
mod.extend self
|
46
48
|
end
|
49
|
+
|
50
|
+
def extend_object(base)
|
51
|
+
base.instance_eval { alias :install_old :install } if base.respond_to? :install
|
52
|
+
base.instance_eval { alias :uninstall_old :uninstall } if base.respond_to? :uninstall
|
53
|
+
base.instance_eval { alias :upload_old :upload } if base.respond_to? :upload
|
54
|
+
super
|
55
|
+
end
|
56
|
+
|
57
|
+
def extended(base)
|
58
|
+
#We try to keep the previous instance methods defined on the base instance if there were ones.
|
59
|
+
base.instance_eval { alias :install :install_old } if base.respond_to? :install_old
|
60
|
+
base.instance_eval { alias :uninstall :uninstall_old } if base.respond_to? :uninstall_old
|
61
|
+
base.instance_eval { alias :upload :upload_old } if base.respond_to? :upload_old
|
62
|
+
end
|
63
|
+
|
64
|
+
# :startdoc:
|
47
65
|
end
|
48
66
|
|
49
67
|
# The artifact identifier.
|
@@ -90,7 +108,7 @@ module Buildr
|
|
90
108
|
|
91
109
|
# :call-seq:
|
92
110
|
# pom => Artifact
|
93
|
-
#
|
111
|
+
#
|
94
112
|
# Convenience method that returns a POM artifact.
|
95
113
|
def pom
|
96
114
|
return self if type == :pom
|
@@ -99,7 +117,7 @@ module Buildr
|
|
99
117
|
|
100
118
|
# :call-seq:
|
101
119
|
# sources_artifact => Artifact
|
102
|
-
#
|
120
|
+
#
|
103
121
|
# Convenience method that returns a sources artifact.
|
104
122
|
def sources_artifact
|
105
123
|
sources_spec = to_spec_hash.merge(:classifier=>'sources')
|
@@ -123,7 +141,7 @@ module Buildr
|
|
123
141
|
xml.classifier classifier if classifier
|
124
142
|
end
|
125
143
|
end
|
126
|
-
|
144
|
+
|
127
145
|
def install
|
128
146
|
pom.install if pom && pom != self
|
129
147
|
invoke
|
@@ -137,7 +155,7 @@ module Buildr
|
|
137
155
|
|
138
156
|
def uninstall
|
139
157
|
installed = Buildr.repositories.locate(self)
|
140
|
-
rm installed if File.exist?(installed)
|
158
|
+
rm installed if File.exist?(installed)
|
141
159
|
pom.uninstall if pom && pom != self
|
142
160
|
end
|
143
161
|
|
@@ -153,14 +171,13 @@ module Buildr
|
|
153
171
|
# In the third form, uses a hash with the options :url, :username, :password,
|
154
172
|
# and :permissions. All but :url are optional.
|
155
173
|
def upload(upload_to = nil)
|
156
|
-
|
174
|
+
upload_task(upload_to).invoke
|
175
|
+
end
|
176
|
+
|
177
|
+
def upload_task(upload_to = nil)
|
157
178
|
upload_to ||= Buildr.repositories.release_to
|
158
179
|
upload_to = { :url=>upload_to } unless Hash === upload_to
|
159
180
|
raise ArgumentError, 'Don\'t know where to upload, perhaps you forgot to set repositories.release_to' unless upload_to[:url]
|
160
|
-
invoke # Make sure we exist.
|
161
|
-
|
162
|
-
# Upload POM ahead of package, so we don't fail and find POM-less package (the horror!)
|
163
|
-
pom.upload(upload_to) if pom && pom != self
|
164
181
|
|
165
182
|
# Set the upload URI, including mandatory slash (we expect it to be the base directory).
|
166
183
|
# Username/password may be part of URI, or separate entities.
|
@@ -169,10 +186,19 @@ module Buildr
|
|
169
186
|
uri.user = upload_to[:username] if upload_to[:username]
|
170
187
|
uri.password = upload_to[:password] if upload_to[:password]
|
171
188
|
|
172
|
-
# Upload artifact relative to base URL, need to create path before uploading.
|
173
|
-
info "Deploying #{to_spec}"
|
174
189
|
path = group.gsub('.', '/') + "/#{id}/#{version}/#{File.basename(name)}"
|
175
|
-
|
190
|
+
|
191
|
+
unless task = Buildr.application.lookup(uri+path)
|
192
|
+
deps = [self]
|
193
|
+
deps << pom.upload_task( upload_to ) if pom && pom != self
|
194
|
+
|
195
|
+
task = Rake::Task.define_task uri + path => deps do
|
196
|
+
# Upload artifact relative to base URL, need to create path before uploading.
|
197
|
+
info "Deploying #{to_spec}"
|
198
|
+
URI.upload uri + path, name, :permissions=>upload_to[:permissions]
|
199
|
+
end
|
200
|
+
end
|
201
|
+
task
|
176
202
|
end
|
177
203
|
|
178
204
|
protected
|
@@ -183,14 +209,14 @@ module Buildr
|
|
183
209
|
ARTIFACT_ATTRIBUTES.each { |key| instance_variable_set("@#{key}", spec[key]) }
|
184
210
|
self
|
185
211
|
end
|
186
|
-
|
212
|
+
|
187
213
|
def group_path
|
188
214
|
group.gsub('.', '/')
|
189
215
|
end
|
190
216
|
|
191
217
|
end
|
192
218
|
|
193
|
-
|
219
|
+
|
194
220
|
# A file task referencing an artifact in the local repository.
|
195
221
|
#
|
196
222
|
# This task includes all the artifact attributes (group, id, version, etc). It points
|
@@ -199,7 +225,7 @@ module Buildr
|
|
199
225
|
#
|
200
226
|
# Note: You can enhance this task to create the artifact yourself, e.g. download it from
|
201
227
|
# a site that doesn't have a remote repository structure, copy it from a different disk, etc.
|
202
|
-
class Artifact < Rake::
|
228
|
+
class Artifact < Rake::FileTask
|
203
229
|
|
204
230
|
# The default artifact type.
|
205
231
|
DEFAULT_TYPE = :jar
|
@@ -323,19 +349,25 @@ module Buildr
|
|
323
349
|
# install test
|
324
350
|
# See also Buildr#install and Buildr#upload.
|
325
351
|
def from(path)
|
326
|
-
path = File.expand_path(path.to_s)
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
352
|
+
path = path.is_a?(Rake::Task) ? path : File.expand_path(path.to_s)
|
353
|
+
unless exist?
|
354
|
+
enhance [path] do
|
355
|
+
path = File.expand_path(path.to_s)
|
356
|
+
mkpath File.dirname(name)
|
357
|
+
pom.invoke unless type == :pom
|
358
|
+
|
359
|
+
cp path, name
|
360
|
+
info "Installed #{path} as #{to_spec}"
|
361
|
+
end
|
332
362
|
end
|
333
363
|
unless type == :pom
|
334
364
|
pom.enhance do
|
365
|
+
unless pom.exist?
|
335
366
|
mkpath File.dirname(pom.name)
|
336
367
|
File.open(pom.name, 'w') { |file| file.write pom.pom_xml }
|
337
368
|
end
|
338
369
|
end
|
370
|
+
end
|
339
371
|
self
|
340
372
|
end
|
341
373
|
|
@@ -343,7 +375,7 @@ module Buildr
|
|
343
375
|
|
344
376
|
# :call-seq:
|
345
377
|
# download
|
346
|
-
#
|
378
|
+
#
|
347
379
|
# Downloads an artifact from one of the remote repositories, and stores it in the local
|
348
380
|
# repository. Raises an exception if the artifact is not found.
|
349
381
|
#
|
@@ -353,7 +385,7 @@ module Buildr
|
|
353
385
|
trace "Downloading #{to_spec}"
|
354
386
|
remote = Buildr.repositories.remote.map { |repo_url| URI === repo_url ? repo_url : URI.parse(repo_url) }
|
355
387
|
remote = remote.each { |repo_url| repo_url.path += '/' unless repo_url.path[-1] == '/' }
|
356
|
-
fail
|
388
|
+
fail "Unable to download #{to_spec}. No remote repositories defined." if remote.empty?
|
357
389
|
exact_success = remote.find do |repo_url|
|
358
390
|
begin
|
359
391
|
path = "#{group_path}/#{id}/#{version}/#{File.basename(name)}"
|
@@ -411,21 +443,21 @@ module Buildr
|
|
411
443
|
fail "Failed to download #{to_spec}, tried the following repositories:\n#{remote_uris.join("\n")}"
|
412
444
|
end
|
413
445
|
end
|
414
|
-
|
415
|
-
|
446
|
+
|
447
|
+
|
416
448
|
# An artifact that is optional.
|
417
449
|
# If downloading fails, the user will be informed but it will not raise an exception.
|
418
450
|
class OptionalArtifact < Artifact
|
419
|
-
|
451
|
+
|
420
452
|
protected
|
421
|
-
|
453
|
+
|
422
454
|
# If downloading fails, the user will be informed but it will not raise an exception.
|
423
455
|
def download
|
424
456
|
super
|
425
|
-
rescue
|
457
|
+
rescue
|
426
458
|
info "Failed to download #{to_spec}. Skipping it."
|
427
459
|
end
|
428
|
-
|
460
|
+
|
429
461
|
end
|
430
462
|
|
431
463
|
|
@@ -458,8 +490,9 @@ module Buildr
|
|
458
490
|
# Sets the path to the local repository.
|
459
491
|
#
|
460
492
|
# The best place to set the local repository path is from a buildr.rb file
|
461
|
-
# located in your home directory. That way all
|
462
|
-
# path, without affecting other developers
|
493
|
+
# located in the .buildr directory under your home directory. That way all
|
494
|
+
# your projects will share the same path, without affecting other developers
|
495
|
+
# collaborating on these projects.
|
463
496
|
def local=(dir)
|
464
497
|
@local = dir ? File.expand_path(dir) : nil
|
465
498
|
end
|
@@ -697,6 +730,7 @@ module Buildr
|
|
697
730
|
# * :under -- The group identifier
|
698
731
|
# * :version -- The version number
|
699
732
|
# * :type -- The artifact type (optional)
|
733
|
+
# * :classifier -- The artifact classifier (optional)
|
700
734
|
#
|
701
735
|
# For example:
|
702
736
|
# group 'xbean', 'xbean_xpath', 'xmlpublic', :under=>'xmlbeans', :version=>'2.1.0'
|
@@ -704,8 +738,14 @@ module Buildr
|
|
704
738
|
# group %w{xbean xbean_xpath xmlpublic}, :under=>'xmlbeans', :version=>'2.1.0'
|
705
739
|
def group(*args)
|
706
740
|
hash = args.pop
|
707
|
-
args.flatten.map
|
708
|
-
|
741
|
+
args.flatten.map do |id|
|
742
|
+
artifact :group => hash[:under],
|
743
|
+
:type => hash[:type],
|
744
|
+
:version => hash[:version],
|
745
|
+
:classifier => hash[:classifier],
|
746
|
+
:id => id
|
747
|
+
end
|
748
|
+
end
|
709
749
|
|
710
750
|
# :call-seq:
|
711
751
|
# install(artifacts)
|
@@ -738,11 +778,10 @@ module Buildr
|
|
738
778
|
def upload(*args, &block)
|
739
779
|
artifacts = artifacts(args)
|
740
780
|
raise ArgumentError, 'This method can only upload artifacts' unless artifacts.all? { |f| f.respond_to?(:to_spec) }
|
781
|
+
upload_artifacts_tasks = artifacts.map { |artifact| artifact.upload_task }
|
741
782
|
task('upload').tap do |task|
|
742
783
|
task.enhance &block if block
|
743
|
-
task.enhance
|
744
|
-
artifacts.each { |artifact| artifact.upload }
|
745
|
-
end
|
784
|
+
task.enhance upload_artifacts_tasks
|
746
785
|
end
|
747
786
|
end
|
748
787
|
|