I have spent the last week doing a lot of prototyping and investigation into
the IDE (VS/SD) support for NMaven. I would like to outline what I have found so far. We need the following three systems: 1) MVC Framework: http://jira.codehaus.org/browse/NMAVEN-17 Uses WinForms and includes basic stuff like hooking into event handler, controller with a command pattern and model changes firing events. 2) .NET Client Calling Maven Embedder through SOAP: http://jira.codehaus.org/browse/NMAVEN-12 I have gotten a basic xFire SOAP server communicating with a .NET client. The plan is to use SOAP as the control language with a Socket logger writing to the IDE console. We will need to wait for the 2.1-alpha release of the MavenEmbedder to do the final hook up. 3) Flexible directory structure to support CLI, VS and SD: http://jira.codehaus.org/browse/NMAVEN-18 The approach that I am planning on taking is to use the xpt template format from SharpDevelop. Within the SD IDE, this template is used to generate a csproj file and to setup the directories, generate files; so its a mix of the archetype and the csproj. I am planning on using this xpt template format as an intermediate format, so that we can easily generate pom to xpt, pom to csproj, csproj to xpt and so on. What will happen in our case is that a developer will create a template (we can also include some standard templates out of the box). Then the maven archetype plugin (for dotnet) will generate the csproj, pom.xml and the appropriate directory structure based on that template. Since the pom.xml file will be generated from the xpt format, we will guarantee that the templates will create a custom project structure that will build from the command line. Then all we have to do is to create a template for whatever IDE environment that we are targeting and we are good to go. Down the road, we can add in the functionality to shift the structure of entire projects. Shane |
Administrator
|
CONTENTS DELETED
The author has deleted this message.
|
MavenEmbedder would run within the same Plexus/Servlet container as xFire.
The Servlet container would almost certainly be Jetty. Shane On 3/16/07, Brett Porter <[hidden email]> wrote: > > > On 15/03/2007, at 11:16 AM, Shane Isbell wrote: > > > 2) .NET Client Calling Maven Embedder through SOAP: > > http://jira.codehaus.org/browse/NMAVEN-12 > > I have gotten a basic xFire SOAP server communicating with a .NET > > client. > > The plan is to use SOAP as the control language with a Socket > > logger writing > > to the IDE console. We will need to wait for the 2.1-alpha release > > of the > > MavenEmbedder to do the final hook up. > > > Where does the actual Maven instance run? > > - Brett > |
Administrator
|
CONTENTS DELETED
The author has deleted this message.
|
Local.
On 3/16/07, Brett Porter <[hidden email]> wrote: > > Where? On the local machine, a remote machine, ? > > On 17/03/2007, at 3:02 AM, Shane Isbell wrote: > > > MavenEmbedder would run within the same Plexus/Servlet container as > > xFire. > > The Servlet container would almost certainly be Jetty. > > > > Shane > > > > On 3/16/07, Brett Porter <[hidden email]> wrote: > >> > >> > >> On 15/03/2007, at 11:16 AM, Shane Isbell wrote: > >> > >> > 2) .NET Client Calling Maven Embedder through SOAP: > >> > http://jira.codehaus.org/browse/NMAVEN-12 > >> > I have gotten a basic xFire SOAP server communicating with a .NET > >> > client. > >> > The plan is to use SOAP as the control language with a Socket > >> > logger writing > >> > to the IDE console. We will need to wait for the 2.1-alpha release > >> > of the > >> > MavenEmbedder to do the final hook up. > >> > >> > >> Where does the actual Maven instance run? > >> > >> - Brett > >> > |
Administrator
|
CONTENTS DELETED
The author has deleted this message.
|
Hi Brett,
Jetty will start automatically when the IDE first starts up. There will, of course, be a command line option for starting as well. I guess on the second issue you raised below, you may have concerns about latency and memory of using Jetty/xFire. There are clearly lighter solutions: a simple java process with an input socket, say TCP, (from the IDE) and an output socket (to the IDE console output). This would require some additional work: the creation of a simple control language and some queue management with worker threads - since the input socket is for control commands handled asynchronously. I'm not opposed to lighter processes, but: 1) I have had good success with Jetty's small memory usage in the past; 2) using Jetty/xFire cuts my dev time. If the latency is too high, then I'll be the first one to dump it; but from past experience with Axis1, simple SOAP requests over the internal network came in between 100-200 ms under small load (10/TPS). The last issue I want to address (which is independent of either of the technical solutions outlined above) is that since we are decoupling the IDE and the MavenEmbedder through the network layer, builds need not "only" be local; rather we have a solution where the build "may" exist on a different physical node than the IDE. This would allow me to set up test machines with different OS, .NET vendors (Microsoft/Novell), patch levels etc in a dev environment. Then after I develop locally, I could test my work - on say a remote Linux machine using Mono - using my Visual Studio IDE. I know Jason raised the issue that watching the build on the remote machine is not all that interesting - I often feel this is the case on my local machine - but this misses the point because its not just a matter of kicking off a build on some continuous integration server after development. This is part of testing and debugging before checking the code in centrally. It allows targeted builds of specific modules and the running of specific integration-tests to address platform issues, all without having to log into the remote machines. In a very large way, I am anticipating the needs of NMaven itself, since we have to support so many platforms. Shane On 3/16/07, Brett Porter <[hidden email]> wrote: > > Cool. > > I'd like to understand: > - how do we make this easy for people to start? > - is jetty/servlet container needed, or is there a lighter way to > embed this in something since we don't really need to use a http > transport since it will always be local? > > On 17/03/2007, at 9:26 AM, Shane Isbell wrote: > > > Local. > > > > On 3/16/07, Brett Porter <[hidden email]> wrote: > >> > >> Where? On the local machine, a remote machine, ? > >> > >> On 17/03/2007, at 3:02 AM, Shane Isbell wrote: > >> > >> > MavenEmbedder would run within the same Plexus/Servlet container as > >> > xFire. > >> > The Servlet container would almost certainly be Jetty. > >> > > >> > Shane > >> > > >> > On 3/16/07, Brett Porter <[hidden email]> wrote: > >> >> > >> >> > >> >> On 15/03/2007, at 11:16 AM, Shane Isbell wrote: > >> >> > >> >> > 2) .NET Client Calling Maven Embedder through SOAP: > >> >> > http://jira.codehaus.org/browse/NMAVEN-12 > >> >> > I have gotten a basic xFire SOAP server communicating with > >> a .NET > >> >> > client. > >> >> > The plan is to use SOAP as the control language with a Socket > >> >> > logger writing > >> >> > to the IDE console. We will need to wait for the 2.1-alpha > >> release > >> >> > of the > >> >> > MavenEmbedder to do the final hook up. > >> >> > >> >> > >> >> Where does the actual Maven instance run? > >> >> > >> >> - Brett > >> >> > >> > |
Free forum by Nabble | Edit this page |