Suppose I have two top-level tasks:
task :publicBuild => [:zipSourceCode, :copyPrivateKey]
task :internalBuild => [:copyPrivateKey]
For the internalBuild task, I don't want to zip source code - I just want the private key. But for a publicBuild, I want to do both. But I need to guarantee that for the publicBuild, the zipSourceCode task is executed before the copyPrivateKey task (I don't want the source code ZIP to contain the public key). 
A dependency such as copyPrivateKey => zipSourceCode wouldn't work because it would mean that for internalBuild, it would call zipSourceCode, which I don't want.
What I want to tell rake is "if these two tasks are to be executed, you should do this one first, but they are both optional". Is this possible?