Over the past few weeks, I have been trying to find an equivalent of the features provided by Maven in the Java world for the products that we have been developing in .Net technologies. I wanted a build script, I wanted dependency management, I wanted dependency resolution (trasitive dependency resolution included), I wanted the development workflow (snapshot-> release -> snapshot), I wanted subversion (our source-control) integration, I wanted continuous integration, I wanted all the goodies.
Couldn't find any, except for NMaven which is a .Net maven plug-in. NMaven, is still in its incubation stage, although there seems to be some activity happening in its code base in source control.
I wasn't ready to look into the options provided by Visual Studio Team System, as we still live in the real world where a lot of our products are still in 1.1 and it will be a while before we catch up with Microsoft's rapid release cycles.
After a while I decided to step back and evaluate the situation. Whatever the new tool is going to be, its going to be a while before we evaluate it, gain knowledge and become comfortable with it, teach every one, put processes around it and finally actually start getting benefits out of it.
Why can't I figure out a way to use maven itself? If it were possible, what would the benefits be?
The learning curve would disappear. We have been successfully using maven on our J2EE products for over a year now. We have an army of developers who understand maven and who can spread the knowledge.
Reaping benefits immediately. We already have the requisite infrastructure in place. The maven repositories - snapshot, release, central mirror (if required).
Processes, Best Practices, Standards, Conventions already defined. We already have these defined and being followed. For example, our project structures, release process, subversion processes of branching, tagging, builds, etc.
Other logistical benefits like no new backup locations (repositories are already being backed up), training material already there, etc, etc.
So that's what I have been working on these past couple of days and I think it can be done and surprisingly quite easily. Check out my post tomorrow for what I have come up with. Its probably the first cut and am sure it can be optimized and automated even further. Just to give you a heads up, the solution involves writing a very simple MOJO (Maven Old Java Object) to define the .Net packaging types of 'dll' & 'exe', using NAnt for compilation and the maven deploy plugin for downloading dependencies.
Ref:
Couldn't find any, except for NMaven which is a .Net maven plug-in. NMaven, is still in its incubation stage, although there seems to be some activity happening in its code base in source control.
I wasn't ready to look into the options provided by Visual Studio Team System, as we still live in the real world where a lot of our products are still in 1.1 and it will be a while before we catch up with Microsoft's rapid release cycles.
After a while I decided to step back and evaluate the situation. Whatever the new tool is going to be, its going to be a while before we evaluate it, gain knowledge and become comfortable with it, teach every one, put processes around it and finally actually start getting benefits out of it.
Why can't I figure out a way to use maven itself? If it were possible, what would the benefits be?
The learning curve would disappear. We have been successfully using maven on our J2EE products for over a year now. We have an army of developers who understand maven and who can spread the knowledge.
Reaping benefits immediately. We already have the requisite infrastructure in place. The maven repositories - snapshot, release, central mirror (if required).
Processes, Best Practices, Standards, Conventions already defined. We already have these defined and being followed. For example, our project structures, release process, subversion processes of branching, tagging, builds, etc.
Other logistical benefits like no new backup locations (repositories are already being backed up), training material already there, etc, etc.
So that's what I have been working on these past couple of days and I think it can be done and surprisingly quite easily. Check out my post tomorrow for what I have come up with. Its probably the first cut and am sure it can be optimized and automated even further. Just to give you a heads up, the solution involves writing a very simple MOJO (Maven Old Java Object) to define the .Net packaging types of 'dll' & 'exe', using NAnt for compilation and the maven deploy plugin for downloading dependencies.
Ref: