From what I can tell... that seems to have the same effect.
If my before method prints out '[BEFORE]' and my after method prints out '[AFTER]' then I get the following trace when I do a clean, build, and package:


** Invoke proj:release:filter (first_time)
** Execute proj:release:filter
[BEFORE]
** Invoke /Users/myuser/source/trunk/release/target/mypackage.zip (first_time)
.
.  (a bunch of 'invoke' statements are here)
.
** Execute /Users/myuser/source/trunk/release/target/mypackage.zip
[AFTER]
Adding mypackage/one/myjar.jar
Adding mypackage/two/file_1.txt
Adding mypackage/two/file_2.txt
Adding mypackage/two/file_3.txt
.
. (a bunch of 'Adding' statements are here)
.
** Execute proj:release:package
** Invoke proj:release:check (first_time)
** Execute proj:release:check
.
. (Buildr continues on...)
.


The adding of my files to the package is still happening after my 'after' method.

Is this a bug maybe? I'm running Buildr 1.3.3. Is it different somehow when trying this from within a subproject? (In my code I'm defining/ running all of this from within the 'release' sub project as opposed to in a function or task).

Thanks for your quick response...

Regards,

Andrew



On May 18, 2009, at 4:53 PM, Alex Boisvert wrote:

Hi Andrew,

To run something before another task, you add a dependency, such as:

task 'before' do
 run_BEFORE_packaging()
end

task 'package' => 'before'

and to do something after, you can use enhance (as you did) but you'll want
to use 'tap' to configure the package(:zip) task like this:

package(:zip, :file=>_('target/mypackage.zip')).tap do |zip|
zip.path('mydeploydir/one').include project('proj:myjar').package(:jar)
 zip.path('mydeploydir/two').include 'mytextfiles/*.txt'
zip.path('mydeploydir/three').include 'myotherfiles/fromthisdir/ *.pdf'
 zip.enhance do
   run_AFTER_packaging()
 end
end

alex


package(:zip, :file=>_('target/mypackage.zip')).enhance do |zip, file|

      run_BEFORE_packaging()

      zip.path('mydeploydir/one').include
project('proj:myjar').package(:jar)
      zip.path('mydeploydir/two').include 'mytextfiles/*.txt'
      zip.path('mydeploydir/three').include
'myotherfiles/fromthisdir/*.pdf'

      run_AFTER_packaging()
  end


On Mon, May 18, 2009 at 3:38 PM, Andrew Moore <rp.andrew.mo...@gmail.com >wrote:


Hi, I'm struggling to understand how I can run some ruby code after I
package
a zip file.

Here is a paired down version of my sub-project definition:


def 'release' do
package(:zip, :file=>_('target/mypackage.zip')).enhance do |zip, file|
      run_BEFORE_packaging()

      zip.path('mydeploydir/one').include
project('proj:myjar').package(:jar)
      zip.path('mydeploydir/two').include 'mytextfiles/*.txt'
      zip.path('mydeploydir/three').include
'myotherfiles/fromthisdir/*.pdf'

      run_AFTER_packaging()
  end
end



I'm not understanding how to invoke my 'run_AFTER_packaging' method after all my various files are included in my zip. My 'run_BEFORE_packaging' method runs, followed by my 'run_AFTER_packaging' method, which is then followed by the actual execution of the package task... (in which all the
various files get added to the zip).

I'm not very familiar with Ruby or Rake... and I've tried searching through all the Buildr and Rake docs and tutorials I can find. I'm assuming there
is
some sort of basic concept I'm not grasping, the docs and tutorials gloss
over something basic or the way of doing this isn't intuitive enough.

Any help in showing me what to do to accomplish this, as well as
enlightening me on what concept I'm missing is much appreciated.

Regards,

Andrew


--
View this message in context:
http://n2.nabble.com/Running-code-after-a-package-task-has-completed-tp2936195p2936195.html
Sent from the Apache Buildr - User mailing list archive at Nabble.com.



Reply via email to