buildr 0.19.0 → 0.20.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/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