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


Reply via email to