buildr 0.19.0 → 0.20.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,11 @@
1
+ 0.20 (4/18/2007)
2
+ * Added: JavadocTask to generate Javadoc documentation for the project, javadoc method on the project itself to return its javadoc task, and Java.javadoc to do all the heavy lifting.
3
+ * Changed: Release code is now implemented as module instead of class. SVN copy made from working copy instead of double commit.
4
+ * Removed: package :file_name options. Does not work with deployed artifacts or POMs.
5
+ * Fixed: Packages not deployed in the right path (but POMs are).
6
+ * Fixed: JARs and WARs include redundant META-INF directory.
7
+ * Fixed: The local package task is now a dependency for install/deploy, and build is dependency for package.
8
+
1
9
  0.19 (4/13/2007)
2
10
  * Fixed: Eclipse task correctly handles FileTasks
3
11
  * Fixed: Eclipse task output directory is "target/classes" (Project.compile.target) instead of "/target"
@@ -8,11 +8,14 @@ require "facet/string/blank"
8
8
  require "facet/nilclass/blank"
9
9
  # x.in?(y) is better than y.include?(x)
10
10
  require "facet/kernel/in"
11
+ # Allows binding[]
12
+ require "facet/binding"
11
13
  # What it says.
12
14
  require "facet/kernel/__DIR__"
13
15
  require "facet/kernel/instance_exec"
14
16
  require "facet/module/alias_method_chain"
15
17
  require "facet/module/memoize"
18
+ require "facet/array/head"
16
19
  require "facet/string/starts_with"
17
20
  require "facet/openobject"
18
21
  require "facets/core/kernel/tap"
@@ -27,7 +30,7 @@ end
27
30
 
28
31
 
29
32
  module Buildr
30
- VERSION = "0.19.0"
33
+ VERSION = "0.20.0"
31
34
  end
32
35
 
33
36
 
@@ -8,13 +8,13 @@ module Buildr
8
8
  desc "Clean files generated during a build"
9
9
  Project.local_task("clean") { |name| "Cleaning #{name}" }
10
10
  desc "Create packages"
11
- Project.local_task("package") { |name| "Packaging #{name}" }
11
+ Project.local_task("package"=>"build") { |name| "Packaging #{name}" }
12
12
  desc "Install packages created by the project"
13
- Project.local_task("install") { |name| "Installing packages from #{name}" }
13
+ Project.local_task("install"=>"package") { |name| "Installing packages from #{name}" }
14
14
  desc "Remove previously installed packages"
15
15
  Project.local_task("uninstall") { |name| "Uninstalling packages from #{name}" }
16
16
  desc "Deploy packages created by the project"
17
- Project.local_task("deploy") { |name| "Deploying packages from #{name}" }
17
+ Project.local_task("deploy"=>"package") { |name| "Deploying packages from #{name}" }
18
18
 
19
19
  [ :build, :clean, :package, :install, :uninstall, :deploy ].each do |name|
20
20
  Project.on_define { |project| project.recursive_task name }
@@ -45,129 +45,135 @@ module Buildr
45
45
  desc "The default task it build"
46
46
  task "default"=>"build"
47
47
 
48
- class Release #:nodoc:
49
48
 
50
- VERSION_NUMBER_PATTERN = /VERSION_NUMBER\s*=\s*(["'])(.*)\1/
51
- NEXT_VERSION_PATTERN = /NEXT_VERSION\s*=\s*(["'])(.*)\1/
49
+ class Release
52
50
 
53
- class << self
54
- def svn_ignores()
55
- @ignores = (@ignores || []).map { |pat| pat.is_a?(Regexp) ? pat : Regexp.new("^.*\s+#{Regexp.escape pat}$") }
56
- end
57
- end
58
-
59
- def initialize(rakefile = nil)
60
- @rakefile = rakefile || Rake.application.rakefile
61
- end
62
-
63
- attr_reader :rakefile
64
-
65
- def invoke()
66
- # Make sure we don't have anything uncommitted in SVN.
67
- check_status
68
- # Update current version to next version before deploying.
69
- next_ver = update_version
70
- # Run the deployment externally using the new version number
71
- # (from the modified Rakefile).
72
- sh "rake deploy"
73
- # Update the next version as well to the next increment and commit.
74
- update_next_version next_ver
75
- # Tag the repository for this release.
76
- tag_repository next_ver
77
- # Update the next version to end with -SNAPSHOT.
78
- update_version_to_snapshot next_ver
79
- end
51
+ THIS_VERSION_PATTERN = /THIS_VERSION|VERSION_NUMBER\s*=\s*(["'])(.*)\1/
52
+ NEXT_VERSION_PATTERN = /NEXT_VERSION\s*=\s*(["'])(.*)\1/
80
53
 
81
- def check_status()
82
- ignores = Release.svn_ignores
83
- status = svn("status", "--ignore-externals", :verbose=>false).
84
- reject { |line| line =~ /^X\s/ || ignores.any? { |pat| line =~ pat } }
85
- fail "Uncommitted SVN files violate the First Principle Of Release!\n#{status}" unless
86
- status.empty?
87
- end
54
+ class << self
88
55
 
89
- # Change the Rakefile and update the current version number to the
90
- # next version number (VERSION_NUMBER = NEXT_VERSION). We need this
91
- # before making a release with the next version. Return the next version.
92
- def update_version()
93
- rakefile = read_rakefile
94
- version = rakefile.scan(VERSION_NUMBER_PATTERN)[0][1] or
95
- fail "Looking for VERSION_NUMBER = \"...\" in your Rakefile, none found"
96
- next_ver = rakefile.scan(NEXT_VERSION_PATTERN)[0][1] or
97
- fail "Looking for NEXT_VERSION = \"...\" in your Rakefile, none found"
98
- if verbose
99
- puts "Current version: #{version}"
100
- puts "Next version: #{next_ver}"
56
+ # :call-seq:
57
+ # make()
58
+ #
59
+ # Make a release.
60
+ def make()
61
+ check
62
+ version = with_next_version { |filename, version| sh "rake deploy --rakefile #{filename}" }
63
+ tag version
64
+ commit version + "-SNAPSHOT"
101
65
  end
102
- # Switch version numbers.
103
- write_rakefile rakefile.gsub(VERSION_NUMBER_PATTERN) { |ver| ver.sub(/(["']).*\1/, %Q{"#{next_ver}"}) }
104
- next_ver
105
- end
106
-
107
- # Change the Rakefile and update the next version number to one after
108
- # (NEXT_VERSION = NEXT_VERSION + 1). We do this to automatically increment
109
- # future version number after each successful release.
110
- def update_next_version(version)
111
- # Update to new version number.
112
- nums = version.split(".")
113
- nums[-1] = nums[-1].to_i + 1
114
- next_ver = nums.join(".")
115
- write_rakefile read_rakefile.gsub(NEXT_VERSION_PATTERN) { |ver| ver.sub(/(["']).*\1/, %Q{"#{next_ver}"}) }
116
- # Commit new version number.
117
- svn "commit", "-m", "Changed version number to #{version}", rakefile
118
- end
119
-
120
- # Create a tag in the SVN repository.
121
- def tag_repository(version)
122
- # Copy to tag.
123
- cur_url = svn("info").scan(/URL: (.*)/)[0][0]
124
- new_url = cur_url.sub(/trunk$/, "tags/#{version}")
125
- svn "remove", new_url, "-m", "Removing old copy" rescue nil
126
- svn "copy", cur_url, new_url, "-m", "Release #{version}"
127
- end
128
-
129
- def update_version_to_snapshot(version)
130
- version += "-SNAPSHOT"
131
- write_rakefile read_rakefile.gsub(VERSION_NUMBER_PATTERN) { |ver| ver.sub(/(["']).*\1/, %Q{"#{version}"}) }
132
- # Commit new version number.
133
- svn "commit", "-m", "Changed version number to #{version}", rakefile
134
- end
135
66
 
136
- protected
67
+ protected
68
+
69
+ # :call-seq:
70
+ # check()
71
+ #
72
+ # Check that we don't have any local changes in the working copy. Fails if it finds anything
73
+ # in the working copy that is not checked into source control.
74
+ def check()
75
+ # Status check reveals modified file, but also SVN externals which we can safely ignore.
76
+ status = svn("status", "--ignore-externals").reject { |line| line =~ /^X\s/ }
77
+ fail "Uncommitted SVN files violate the First Principle Of Release!\n#{status}" unless
78
+ status.empty?
79
+ end
80
+
81
+ # :call-seq:
82
+ # with_next_version() { |filename| ... } => version
83
+ #
84
+ # Yields to block with upgraded version number, before committing to use it. Returns the *new*
85
+ # current version number.
86
+ #
87
+ # We need a Rakefile with upgraded version numbers to run the build, but we don't want the
88
+ # Rakefile modified unless the build succeeds. So this method updates the version numbers in
89
+ # a separate (Rakefile.next) file, yields to the block with that filename, and if successful
90
+ # copies the new file over the existing one.
91
+ #
92
+ # Version numbers are updated as follows. The next release version becomes the current one,
93
+ # and the next version is upgraded by one to become the new next version. So:
94
+ # THIS_VERSION = 1.1.0
95
+ # NEXT_VERSION = 1.2.0
96
+ # becomes:
97
+ # THIS_VERSION = 1.2.0
98
+ # NEXT_VERSION = 1.2.1
99
+ # and the method will return 1.2.0.
100
+ def with_next_version()
101
+ new_filename = Rake.application.rakefile + ".next"
102
+ modified = change_version do |this_version, next_version|
103
+ one_after = next_version.split(".")
104
+ one_after[-1] = one_after[-1].to_i + 1
105
+ [ next_version, one_after.join(".") ]
106
+ end
107
+ File.open(new_filename, "w") { |file| file.write modified }
108
+ begin
109
+ yield new_filename
110
+ mv new_filename, Rake.application.rakefile
111
+ ensure
112
+ rm new_filename rescue nil
113
+ end
114
+ File.read(Rake.application.rakefile).scan(THIS_VERSION_PATTERN)[0][1]
115
+ end
137
116
 
138
- def read_rakefile()
139
- File.read(rakefile)
140
- end
117
+ # :call-seq:
118
+ # change_version() { |this, next| ... } => rakefile
119
+ #
120
+ # Change version numbers in the current Rakefile, but without writing a new file (yet).
121
+ # Returns the contents of the Rakefile with the modified version numbers.
122
+ #
123
+ # This method yields to the block with the current (this) and next version numbers and expects
124
+ # an array with the new this and next version numbers.
125
+ def change_version()
126
+ rakefile = File.read(Rake.application.rakefile)
127
+ this_version = rakefile.scan(THIS_VERSION_PATTERN)[0][1] or
128
+ fail "Looking for THIS_VERSION = \"...\" in your Rakefile, none found"
129
+ next_version = rakefile.scan(NEXT_VERSION_PATTERN)[0][1] or
130
+ fail "Looking for NEXT_VERSION = \"...\" in your Rakefile, none found"
131
+ this_version, next_version = yield(this_version, next_version)
132
+ if verbose
133
+ puts "Upgrading version numbers:"
134
+ puts " This: #{this_version}"
135
+ puts " Next: #{next_version}"
136
+ end
137
+ rakefile.gsub(THIS_VERSION_PATTERN) { |ver| ver.sub(/(["']).*\1/, %Q{"#{this_version}"}) }.
138
+ gsub(NEXT_VERSION_PATTERN) { |ver| ver.sub(/(["']).*\1/, %Q{"#{next_version}"}) }
139
+ end
141
140
 
142
- def write_rakefile(contents)
143
- File.open(rakefile, "w") { |file| file.write contents }
144
- end
141
+ # :call-seq:
142
+ # tag(version)
143
+ #
144
+ # Tags the current working copy with the release version number.
145
+ def tag(version)
146
+ url = svn("info").scan(/URL: (.*)/)[0][0].sub(/trunk$/, "tags/#{version}")
147
+ svn "remove", url, "-m", "Removing old copy" rescue nil
148
+ svn "copy", Dir.pwd, url, "-m", "Release #{version}"
149
+ end
145
150
 
146
- def svn(*args)
147
- if Hash === args.last
148
- options = args.pop
149
- else
150
- options = { :verbose=>verbose }
151
+ # :call-seq:
152
+ # commit(version)
153
+ #
154
+ # Last, we commit what we currently have in the working copy.
155
+ def commit(version)
156
+ rakefile = File.read(Rake.application.rakefile).
157
+ gsub(THIS_VERSION_PATTERN) { |ver| ver.sub(/(["']).*\1/, %Q{"#{version}"}) }.
158
+ File.open(Rake.application.rakefile, "w") { |file| file.write rakefile }
159
+ svn "commit", "-m", "Changed version number to #{version}", Rake.application.rakefile
151
160
  end
152
- puts ["svn", *args].join(" ") if options[:verbose]
153
- Open3.popen3("svn", *args) do |stdin, stdout, stderr|
154
- stdin.close
155
- error = stderr.read
156
- fail error unless error.empty?
157
- stdout.read.tap { |output| puts output if Rake.application.options.trace }
161
+
162
+ # :call-seq:
163
+ # svn(*args)
164
+ #
165
+ # Executes SVN command and returns the output.
166
+ def svn(*args)
167
+ cmd = "svn " + args.map { |arg| arg[" "] ? %Q{"#{arg}"} : arg }.join(" ")
168
+ puts cmd if verbose
169
+ `#{cmd}`.tap { fail "SVN command failed" unless $?.exitstatus == 0 }
158
170
  end
159
171
  end
160
172
 
161
173
  end
162
174
 
163
-
164
175
  desc "Make a release"
165
- task("release").tap do |task|
166
- class << task
167
- def release()
168
- @release ||= Release.new
169
- end
170
- end
171
- task.enhance { task.release.invoke }
176
+ task "release" do |task|
177
+ Release.make
172
178
  end
173
179
  end
@@ -498,7 +498,7 @@ module Buildr
498
498
  else
499
499
  # Upload artifact to URL.
500
500
  puts "Deploying #{artifact}" if verbose
501
- session.upload artifact, File.basename(artifact)
501
+ session.upload artifact.to_s, File.basename(artifact.to_s)
502
502
  end
503
503
  end
504
504
  end
@@ -281,6 +281,144 @@ module Buildr
281
281
 
282
282
  end
283
283
 
284
+
285
+ # A convenient task for creating Javadocs from the project's compile task. Minimizes all
286
+ # the hard work to calling #from and #using.
287
+ #
288
+ # For example:
289
+ # javadoc.from(projects("myapp:foo", "myapp:bar")).using(:windowtitle=>"My App")
290
+ # Or, short and sweet:
291
+ # desc "My App"
292
+ # define "myapp" do
293
+ # . . .
294
+ # javadoc projects("myapp:foo", "myapp:bar")
295
+ # end
296
+ class JavadocTask < Rake::Task
297
+
298
+ def initialize(*args) #:nodoc:
299
+ super
300
+ @options = {}
301
+ @classpath = []
302
+ @sourcepath = []
303
+ @files = FileList[]
304
+ enhance do |task|
305
+ rm_rf target.to_s, :verbose=>false
306
+ Java.javadoc source_files, options.merge(:classpath=>classpath, :sourcepath=>sourcepath, :name=>name, :output=>target.to_s)
307
+ touch target.to_s, :verbose=>false
308
+ end
309
+ end
310
+
311
+ # The target directory for the generated Javadoc files.
312
+ attr_reader :target
313
+
314
+ # :call-seq:
315
+ # into(path) => self
316
+ #
317
+ # Sets the target directory and returns self. This will also set the Javadoc task
318
+ # as a prerequisite to a file task on the target directory.
319
+ #
320
+ # For example:
321
+ # package :zip, :classifier=>"docs", :include=>javadoc.target
322
+ def into(path)
323
+ path = File.expand_path(path.to_s)
324
+ @target = file(path).enhance([self]) unless @target && @target.to_s == path
325
+ self
326
+ end
327
+
328
+ # :call-seq:
329
+ # include(*files) => self
330
+ #
331
+ # Includes additional source files and directories when generating the documentation
332
+ # and returns self. When specifying a directory, includes all .java files in that directory.
333
+ def include(*files)
334
+ @files.include *files
335
+ self
336
+ end
337
+
338
+ # :call-seq:
339
+ # exclude(*files) => self
340
+ #
341
+ # Excludes source files and directories from generating the documentation.
342
+ def exclude(*files)
343
+ @files.exclude *files
344
+ self
345
+ end
346
+
347
+ # Classpath dependencies.
348
+ attr_accessor :classpath
349
+
350
+ # :call-seq:
351
+ # with(*artifacts) => self
352
+ #
353
+ # Adds files and artifacts as classpath dependencies, and returns self.
354
+ def with(*specs)
355
+ @classpath |= artifacts(specs.flatten).uniq
356
+ self
357
+ end
358
+
359
+ # Additional sourcepaths that are not part of the documented files.
360
+ attr_accessor :sourcepath
361
+
362
+ # Returns the Javadoc options.
363
+ attr_reader :options
364
+
365
+ # :call-seq:
366
+ # using(options) => self
367
+ #
368
+ # Sets the Javadoc options from a hash and returns self.
369
+ #
370
+ # For example:
371
+ # javadoc.using :windowtitle=>"My application"
372
+ def using(options)
373
+ options.each { |key, value| @options[key] = value }
374
+ self
375
+ end
376
+
377
+ # :call-seq:
378
+ # from(*sources) => self
379
+ #
380
+ # Includes files, directories and projects in the Javadoc documentation and returns self.
381
+ #
382
+ # You can call this method with Java source files and directories containing Java source files
383
+ # to include these files in the Javadoc documentation, similar to #include. You can also call
384
+ # this method with projects. When called with a project, it includes all the source files compiled
385
+ # by that project and classpath dependencies used when compiling.
386
+ #
387
+ # For example:
388
+ # javadoc.from projects("myapp:foo", "myapp:bar")
389
+ def from(*sources)
390
+ sources.flatten.each do |source|
391
+ case source
392
+ when Project
393
+ self.include source.compile.sources
394
+ self.with source.compile.classpath
395
+ when Rake::Task, String
396
+ self.include source
397
+ else
398
+ fail "Don't know how to generate Javadocs from #{source || 'nil'}"
399
+ end
400
+ end
401
+ self
402
+ end
403
+
404
+ def prerequisites() #:nodoc:
405
+ super + @files + classpath + sourcepath
406
+ end
407
+
408
+ def source_files() #:nodoc:
409
+ @source_files ||= @files.map(&:to_s).
410
+ map { |file| File.directory?(file) ? FileList[File.join(file, "**/*.java")] : file }.
411
+ flatten.reject { |file| @files.exclude?(file) }
412
+ end
413
+
414
+ def needed?() #:nodoc:
415
+ return false if source_files.empty?
416
+ return true unless File.exist?(target.to_s)
417
+ source_files.map { |src| File.stat(src.to_s).mtime }.max > File.stat(target.to_s).mtime
418
+ end
419
+
420
+ end
421
+
284
422
  end
285
423
 
286
424
 
@@ -289,6 +427,9 @@ module Buildr
289
427
  desc "Compile all projects"
290
428
  Project.local_task("compile") { |name| "Compiling #{name}" }
291
429
 
430
+ desc "Create the Javadocs for this project"
431
+ Project.local_task("javadoc")
432
+
292
433
  class Project
293
434
 
294
435
  # :call-seq:
@@ -356,6 +497,23 @@ module Buildr
356
497
  task("resources").enhance prereqs, &block
357
498
  end
358
499
 
500
+ # :call-seq:
501
+ # javadoc(*sources) => JavadocTask
502
+ #
503
+ # This method returns the project's Javadoc task. It also accepts a list of source files,
504
+ # directories and projects to include when generating the Javadocs.
505
+ #
506
+ # By default the Javadoc task uses all the source directories from compile.sources and generates
507
+ # Javadocs in the target/javadoc directory. This method accepts sources and adds them by calling
508
+ # JavadocsTask#from.
509
+ #
510
+ # For example, if you want to generate Javadocs for a given project that includes all source files
511
+ # in two of its sub-projects:
512
+ # javadoc projects("myapp:foo", "myapp:bar").using(:windowtitle=>"Docs for foo and bar")
513
+ def javadoc(*sources, &block)
514
+ task("javadoc").from(*sources).enhance &block
515
+ end
516
+
359
517
  end
360
518
 
361
519
  Project.on_define do |project|
@@ -368,11 +526,18 @@ module Buildr
368
526
  project.path_to("src/main/java").tap { |dir| compile.from dir if File.exist?(dir) }
369
527
  compile.into project.path_to("target/classes")
370
528
  resources.filter.into project.compile.target
529
+ Java::JavadocTask.define_task("javadoc"=>prepare).tap do |javadoc|
530
+ javadoc.into project.path_to("target/javadoc")
531
+ javadoc.using :windowtitle=>project.comment || project.name
532
+ end
371
533
  project.recursive_task("compile")
372
534
  project.clean { verbose(false) { rm_rf project.path_to("target") } }
373
535
 
374
536
  project.enhance do |project|
537
+ # This comes last because the target path may change.
375
538
  project.build project.compile.target
539
+ # This comes last so we can determine all the source paths and classpath dependencies.
540
+ project.javadoc.from project
376
541
  end
377
542
  end
378
543
 
@@ -194,6 +194,62 @@ module Buildr
194
194
  end
195
195
  end
196
196
 
197
+ # :call-seq:
198
+ # javadoc(*files, options)
199
+ #
200
+ # Runs Javadocs with the specified files and options.
201
+ #
202
+ # This method accepts the following special options:
203
+ # * :output -- The output directory
204
+ # * :classpath -- Array of classpath dependencies.
205
+ # * :sourcepath -- Array of sourcepaths (paths or tasks).
206
+ # * :name -- Shows this name, otherwise shows the working directory.
207
+ # * :verbose -- If you want an overload of details.
208
+ #
209
+ # All other options are passed to Javadoc as following:
210
+ # * true -- As is, for example, :author=>true becomes -author
211
+ # * false -- Prefixed, for example, :index=>false becomes -noindex
212
+ # * string -- Option with value, for example, :windowtitle=>"My project" becomes -windowtitle "My project"
213
+ # * array -- Option with set of values separated by spaces.
214
+ def javadoc(*args)
215
+ options = Hash === args.last ? args.pop : {}
216
+ options[:verbose] ||= Rake.application.options.trace || false
217
+
218
+ Tempfile.open("javadoc") do |opt_file|
219
+ options.reject { |key, value| [:output, :verbose, :name, :sourcepath, :classpath].include?(key) }.
220
+ each { |key, value| value.invoke if value.respond_to?(:invoke) }.
221
+ each do |key, value|
222
+ case value
223
+ when true, nil
224
+ opt_file.puts "-#{key}"
225
+ when false
226
+ opt_file.puts "-no#{key}"
227
+ when Array
228
+ opt_file.puts "-#{key} " << value.map { |val| %q{"#{val}"} }.join(" ")
229
+ when Hash
230
+ value.each { |k,v| opt_file.puts "-#{key} #{k} #{v}" }
231
+ else
232
+ opt_file.puts "-#{key} \"#{value}\""
233
+ end
234
+ end
235
+ [:sourcepath, :classpath].each do |option|
236
+ options[option].to_a.flatten.tap do |paths|
237
+ opt_file.puts "-#{option} " << paths.flatten.map(&:to_s).join(File::PATH_SEPARATOR) unless paths.empty?
238
+ end
239
+ end
240
+ opt_file.puts args.flatten.uniq.join(" ")
241
+ opt_file.flush
242
+ cmd_args = [ "-d", options[:output], options[:verbose] ? "-verbose" : "-quiet", "@#{opt_file.path}"]
243
+ cmd_args << { :verbose=>options[:verbose] }
244
+ name = options[:name] || Dir.pwd
245
+ unless Rake.application.options.dryrun
246
+ puts "Generating Javadoc for #{name}" if verbose
247
+ puts File.read(opt_file.path) if options[:verbose]
248
+ sh(path_to_bin("javadoc"), *cmd_args) { |ok, res| fail "Failed to generate Javadocs, see errors above" unless ok }
249
+ end
250
+ end
251
+ end
252
+
197
253
  # :call-seq:
198
254
  # junit(*classes, options) => [ passed, failed ]
199
255
  #
@@ -65,7 +65,6 @@ module Buildr
65
65
  protected
66
66
 
67
67
  def create(zip) #:nodoc:
68
- zip.mkdir "META-INF"
69
68
  meta_inf.map(&:to_s).uniq.each { |file| zip.add "META-INF/#{File.basename(file)}", file }
70
69
  unless manifest == false
71
70
  zip.file.open("META-INF/MANIFEST.MF", "w") do |output|
@@ -164,8 +163,6 @@ module Buildr
164
163
  # The second argument provides additional options used when defining the package.
165
164
  #
166
165
  # The following options are supported by all package types:
167
- # * :file_name -- The package file name. By default it uses the artifact identifier,
168
- # version number and file type to create a file name (id-version.type).
169
166
  # * :id -- The artifact identifier. By default, uses the project's #id property.
170
167
  # * :group -- The group identifier. By default, uses the project's #group property.
171
168
  # * :version -- The version number. By default, uses the project's #version property.
@@ -230,7 +227,7 @@ module Buildr
230
227
  options[:group] ||= self.group
231
228
  options[:version] ||= self.version
232
229
  options[:type] = type
233
- file_name = options[:file_name] || path_to("target", Artifact.hash_to_file_name(options))
230
+ file_name = path_to("target", Artifact.hash_to_file_name(options))
234
231
 
235
232
  packager = method("package_as_#{type}") rescue
236
233
  fail("Do not know how to create a package of type #{:type}")
@@ -274,7 +271,7 @@ module Buildr
274
271
  [ installed, package.pom ].map(&:to_s).each { |file| rm file if File.exist?(file) }
275
272
  end
276
273
  end
277
- task("deploy") { deploy(installed, package.pom) }
274
+ task("deploy") { deploy(package, package.pom) }
278
275
 
279
276
  # Add the package to the list of packages created by this project, and
280
277
  # register it as an artifact. The later is required so if we look up the spec
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: buildr
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.19.0
7
- date: 2007-04-13 00:00:00 -07:00
6
+ version: 0.20.0
7
+ date: 2007-04-18 00:00:00 -07:00
8
8
  summary: A build system that doesn't suck
9
9
  require_paths:
10
10
  - lib