Yeah, that is strange... it seems like that should work.
I don't see why it didn't for me... I ran it a couple times to make sure that was the case. I do finally have it working. The buildfile looks something like this now:




define 'release' do
    before_task = task do
        puts '[BEFORE]'
    end

package(:zip, :file=>_('target/mypackage.zip')).enhance [before_task] 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
            puts '[AFTER]'
        end
    end
end



Not sure if having the enhance for the main package task and inside the package task does the trick?

Thanks for all your help. I finally have it working!

~ Andrew


On May 18, 2009, at 5:34 PM, Alex Boisvert wrote:

Strange.  Here's the Buildfile I used,

repositories.remote << "http://www.ibiblio.org/maven2/";

define "foo" do
 project.version = "1.0"
 project.group = "com.example"

 task 'before' do
   puts "BEFORE"
 end

 task 'package' => 'before'

 package(:zip, :file => 'target/foo.zip').tap do |zip|
   zip.path('/').include 'foo.txt'
   zip.enhance do
     puts "AFTER"
   end
 end

end

and the output,

boisv...@sixtine:~/tmp/before_after$ buildr clean package
(in /home/boisvert/tmp/before_after, development)
Cleaning foo
Building foo
Compiling foo into /home/boisvert/tmp/before_after/target/classes
Packaging foo
BEFORE
Packaging foo.zip
AFTER
Running integration tests...
Completed in 0.388s

and the resulting archive looks good,

boisv...@sixtine:~/tmp/before_after$ unzip -l target/foo.zip
Archive:  target/foo.zip
 Length     Date   Time    Name
--------    ----   ----    ----
       0  05-18-09 16:32   foo.txt
--------                   -------
       0                   1 file

alex

On Mon, May 18, 2009 at 3:38 PM, Andrew Moore <[email protected] >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