Hi Stefan,

-------- Original-Nachricht --------
> Von: Stefan Bodewig <bode...@apache.org>
> On 2009-10-12, Christian Möller <dcmoel...@gmx.de> wrote:
> >   <target name="init">
> >     <echo>Hello from target 'init'</echo>
> >     <appendExecutionOf target="extra-pre-test" toTarget="pre-test" />
> >     <appendExecutionOf target="extra-post-test" toTarget="post-test" />
> >   </target>
> 
> >   <target name="test" depends="init">
> >     <antcall target="pre-test"/>
> >     <echo>Hello from target 'test'</echo>
> >     <antcall target="post-test"/>
> >   </target>
> 
> > This is purposing the follwing: Adding execution of additional targets
> > (here "extra-pre-test" and "extra-post-test") to some other targets
> > (here "pre-test" and "post-test", respectively) depending on
> > environmental properties (not shown here for simplicity).
> 
> > But unfortunalety this does not work as expected:
> 
> Your macro (which looks fine, that's why I snipped it) adds a new task
> to a target in the currently executing Project instance.  In your test
> you try to validate that it worked via antcall which creates a new
> Project instance and re-parses the build file for that new instance -
> your macro has never been executed for this instance and so the tasks
> have never been added there.

Tank you very much, I got it myself - by a strange coincidence at roughly the 
same time as you wrote your helpful answer :-). So your reply confirms my own 
conclusions.

In the light of your explanation <antcall> does not only "Call another target 
within the same buildfile optionally specifying some properties [...]" as 
stated in the docs. Maybe it's worth emphasizing in the docs that a *new 
project* is instantiated, isn't it?

> If you try
> 
> <target name="test" depends="init, pre-test"/>
> 
> you should see you extra-pre-test.  Alternatively make pre-test and
> post-test depend on init so the tasks get added in their Project
> instance even in the presence of antcall.

My solution now looks something like this:

  [...]
  <target name="init">
    <echo>Target 'init'</echo>
    <appendExecutionOf target="extra-pre-main" toTarget="pre-main" />
    <appendExecutionOf target="extra-post-main" toTarget="post-main" />
  </target>

  <target name="extra-pre-main">
    <echo>Target 'extra-pre-main'</echo>
  </target>

  <target name="extra-post-main">
    <echo>Target 'extra-post-main'</echo>
  </target>

  <target name="pre-main">
    <echo>Target 'pre-main'</echo>
  </target>

  <target name="post-main">
    <echo>Target 'post-main'</echo>
  </target>

  <target name="do-main">
    <echo>Target 'main'</echo>
  </target>

  <target name="main" depends="init, pre-main, do-main, post-main"/>

Thanks again.

Christian
-- 
GRATIS für alle GMX-Mitglieder: Die maxdome Movie-FLAT!
Jetzt freischalten unter http://portal.gmx.net/de/go/maxdome01

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@ant.apache.org
For additional commands, e-mail: user-h...@ant.apache.org

Reply via email to