On Jul 23, 2009, at 4:23 PM, Jason Porter wrote:
On Thu, Jul 23, 2009 at 02:55, Hans Dockter<[email protected]> wrote:
Hi,
I'm thinking about the best way to implement stopping a Gradle build.
One way to do it would be to add a type BuildController. A instance
of this
can be optionally passed to the Gradle.run method. The TaskExecuter
and the
Task will be associated with an instance of BuildController. If the
state of
the build controller is changed to stop, the TaskExecuter, Task,
etc can
react upon this and will throw eventually a
BuildInterruptedException. This
is a pretty intrusive approach. It has the additional draw back,
that every
task needs to be smart about this to make it work well. For example
a task
that delegates to an Ant task must wait with stopping the build
until the
Ant task has finished.
Another way of doing this is to still add a type BuildController.
You can
send a StopEvent to the BuildController. We have a separate Thread
that
receives this StopEvent. If it is received, the Thread running the
Gradle
build will be stopped.
Thoughts?
- Hans
--
Hans Dockter
Gradle Project Manager
http://www.gradle.org
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email
Wouldn't the second approach still have the same drawback as the first
in regards to Ant tasks? At least if you wanted to shut down
gracefully and cleanup after the shutdown (closing connections,
streams, etc).
The second approach could be combined with throwing a lifecycle event
where a build can register itself to do custom cleaning.
- Hans
--
Hans Dockter
Gradle Project Manager
http://www.gradle.org
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email