On 11 March 2013 03:24, Szczepan Faber <[email protected]>wrote:

> Hey Marcin,
>
> Dzieki for this awesome code ;)
>
> I have some questions about how it works. I know I could probably figure
> out this from the code/spec but it might be useful for others (plus I
> didn't see that documented in the docs for the new api methods).
>
> Say I configure:
> foo.mustRunAfter(bar)
>
> 1. When I run 'gradle bar' and 'bar' succeeds, does gradle execute 'foo'?
>

No. The rule only takes effect if both foo and bar are in the task graph.
There will be another rule that we add to allow you to force tasks to be
added to the graph - eg if the unit tests run, then also run the test
report task.


> 2. When I run 'gradle bar' and 'bar' fails, does gradle execute 'foo'?
>

No. As above. If you run 'gradle bar foo' and 'bar' fails, 'foo' will still
be executed (if you're running with --continue). It's an ordering rule not
a dependency rule.


> 3. When I run 'gradle foo bar', what's the order of execution?
>

bar and all its dependencies, then foo and all its remaining dependencies.


> 4. When bar.dependsOn foo and I run 'gradle bar', what's the order of
> execution?
>

You'll get an exception, as you've got an ordering cycle. The 'must' in the
name means that it is a mandatory ordering, and so it blows up when there
are contradictory rules. We'll probably add an equivalent 'should' ordering
too - my unit tests should run before my int tests, but it doesn't matter
if they don't.


> 5. Is mustRunAfter behavior also respected in an incubating parallel
> build? Probably not, but just checking :)
>

It is. The 'is this task ready to execute' logic takes ordering rules into
account.


-- 
Adam Murdoch
Gradle Co-founder
http://www.gradle.org
VP of Engineering, Gradleware Inc. - Gradle Training, Support, Consulting
http://www.gradleware.com

Join us at the Gradle Summit 2013, June 13th and 14th in Santa Clara, CA:
http://www.gradlesummit.com

Reply via email to