In Rake, I can use the following syntax to declare that task charlie
requires tasks alpha
and bravo
to have been completed first.
task :charlie => [:alpha, :bravo]
This seems to work fine if charlie
is a typical Rake task or a file task but I cannot figure out how to do this for a Rake::PackageTask
. Here are the relevant parts of the rakefile so far:
require 'rake/packagetask'
file :package_jar => [:compile] do
puts("Packaging library.jar...")
# code omitted for brevity, but this bit works fine
end
Rake::PackageTask.new("library", "1.0") do |pt|
puts("Packaging library distribution artefact...")
pt.need_tar = true
pt.package_files = ["target/library.jar"]
end
task :package => :package_jar
What's happening here is that, for a clean build, it complains that it doesn't "know how to build task 'target/library.jar'". I have to run rake package_jar
from the command line manually to get it to work, which is a bit of a nuisance. Is there any way I can make package
depend on package_jar
?
For what it's worth, I am using Rake version 0.9.2.2 with Ruby 1.8.7 on Linux.