Could we add the functionality to the Project API through an extension then?
Something like
project.extensions.async.javaFork { … } to get at it? Would that help to 
separate it enough? I guess I write it as a separate plugin entirely that adds 
the extension to the project only when you apply it.

Yeah, I suspected I would need to create a new interface in org.gradle.process 
to expose the functionality needed. Probably leave ExecHandle where it is to 
limit the impact.  

--  
John Engelman


On Thursday, November 21, 2013 at 10:16 AM, Luke Daley-2 [via Gradle] wrote:

>  
> On 21 Nov 2013, at 3:11 pm, johnrengelman <[hidden email] 
> (/user/SendEmail.jtp?type=node&node=5712031&i=0)> wrote:  
>  
> > Hi all -  
> > I've been finding more and more reasons in our build in our build to create 
> >  
> > an implementation of java process forking. Currently the JavaExec  
> > implementation is synchronous and I'm looking at implementing some features 
> >  
> > that would allow a build to fork multiple processes and then blocking on  
> > joining them back together. I don't see any designDocs related to this (or  
> > to parallel task execution within a project) so I wonder if there is some  
> > thought already on this.  
> >  
> > I have a working implementation that I want to extend into gradle core if  
> > possible. The simple API would be to add the following to Project:  
> >  
> > ExecHandle javafork(Closure closure);  
> > ExecHandle fork(Closure closure);  
> >  
> > Might also be useful to add the following:  
> >  
> > ExecResult join(ExecHandle handle);  
> > List<ExecResult> join(List<ExecHandle> handles);  
> >  
> > Any thoughts or suggestions?  
> ExecHandle is currently internal API, so at the least that would have to be 
> addressed.  
>  
> Another problem is that we are really reluctant to grow the Project API at 
> all. We are working on a way to add new functionality like this, but it's not 
> going to be available soon. It would be preferable to deliver this as a kind 
> of extension library for the time being. It will have to use internal API so 
> that does mean there may be versioning issues.  
>  
> In my experience when working with async processes, you nearly always end up 
> doing some pattern matching on the launched process for state control. It 
> would be good to get some support for that in there too.  
>  
> --  
> Luke Daley  
> Principal Engineer, Gradleware  
> http://gradleware.com
>  
>  
> ---------------------------------------------------------------------  
> To unsubscribe from this list, please visit:  
>  
>     http://xircles.codehaus.org/manage_email
>  
>  
>  
>  
> If you reply to this email, your message will be added to the discussion 
> below: 
> http://gradle.1045684.n5.nabble.com/ForkedJavaExec-implementation-tp5712028p5712031.html
>   
> To start a new topic under gradle-dev, email 
> ml-node+s1045684n1436218...@n5.nabble.com 
> (mailto:ml-node+s1045684n1436218...@n5.nabble.com)  
> To unsubscribe from gradle-dev, click here 
> (http://gradle.1045684.n5.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=1436218&code=am9obi5yLmVuZ2VsbWFuQGdtYWlsLmNvbXwxNDM2MjE4fDIyMTUyNjEzNQ==).
> NAML 
> (http://gradle.1045684.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml)
>   





--
View this message in context: 
http://gradle.1045684.n5.nabble.com/ForkedJavaExec-implementation-tp5712028p5712033.html
Sent from the gradle-dev mailing list archive at Nabble.com.

Reply via email to