NMaven 0.17 Released at CodePlex
Last week, I released NMaven 0.17 on its new project site at CodePlex. Features for this release include compiling C# projects, signing assemblies, and multiple archetype support.
I originally started NMaven on Sourceforge, and after a number of releases, moved it into Apache incubation. Over the last two years, we had trouble gaining traction at Apache. So we decided to shut the project down and move it to CodePlex to give it some fresh air.
The next critical feature for NMaven is getting support for .NET 3.0 using Maven toolchains. Maven 3.x provides a cleaner architecture for supporting of multiple languages, like C# and VB.NET. All of this is much easier to do than it was when NMaven started. I’ve also got some more features in the works dealing with pom to Visual Studio project conversions, which you will be able to use after the release of Maven 3.0-alpha1, with its new project builder.
Efficient Interaction with the Central Maven Repository: Downloading the Nexus Index
The Central Maven repository had some recent bandwidth issues which were related to the Nexus index. There was a tool (which will remain nameless) which was configured to download the Nexus index at a regular interval of five hours even though this 28 MB file only changes once a week. This post isn’t an exercise in blame, and we’re not going to identify the project or the tool that was misconfigured. This post is more of an attempt to illustrate the problems that can be caused by something as insignificant as a regular 28 MB download when it is applied to something as universal as the Central Maven Repository. Because the Central Maven Repository is such a popular and universal resource, small bandwidth inefficiencies can turn into unwitting Denial of Service attacks. For this reason, it is important that everyone who depends on the Central Maven Repository understand some of the challenges faced by the people maintaining this essential resource.
What is the Nexus Index?
The Central Maven repository maintains a Nexus index of all of the repository contents. The Nexus index is a Lucene index which provides a fast index for searching. Instead of grabbing all 70 GB of the repository, a tool like the Nexus repository manager can read 28 MB of index data and then search this index for a particular artifact. The index is generated once a week on a Sunday night. Need to know which artifact contains classes that match the wildcard expression “Hibernate*”? Want to see a list of versions for commons-lang? Search the Nexus index, it is a Lucene index, and code to create a Nexus Index or query a Nexus Index is freely available under the Eclipse Public License (here’s the source). The Nexus index is a good thing, it cuts down on the amount of data required to find and locate artifacts.
It is such a good thing that it currently accounts for more than half of the bandwidth used for the Central Maven repository.
Maven, Nexus & m2eclipse at Devoxx
I’m really excited to be heading off to Devoxx! It will be my first time in Belgium and there are some very powerful features in Nexus, m2eclipse, and Maven 3.x excited to demo. I’ll be around from Tuesday to Saturday so if anyone wants to find out about anything Maven/DependencyManagement/Repository related.
Some of the things going on in Maven-land:
- NMaven was released this week from Codeplex and Byldan which is a pure C# implementation of Maven is also going to be out soon and is very cool.
- Mercury which is the next generation dependency management library is also close to being released.
- Nexus is going to have some very powerful OSGi features and that seems to be piquing a lot of interest.
So lots to chat about. To find me just ask everyone to say “out and about with Java” and you will immediately identify the Canadian, then you can narrow it down with questions about Maven. If you find a person that says those words normally and doesn’t know anything about the Maven Site Plugin you have found Howard Lewis ship. Otherwise you have found me.