<iframe src="//www.googletagmanager.com/ns.html?id=GTM-TT8R4P" height="0" width="0" style="display:none;visibility:hidden">

Sonatype Blog

Stay updated on the latest news from the makers of Nexus

Shane Isbell

Recent Posts by Shane Isbell:

Introducing Byldan: A .NET Version of Maven

If you are a .NET developer and like the Maven concept but don't want to install Maven and Java on your system, Byldan is a project definitely worth looking into. Last year, Byldan started as an experimental, Mavenish build system written in C# but is now the basis for doing a full Maven port to .NET.

At the time I started Byldan, I had been working on NMaven for more than a year and had encountered a lot of issues of getting Maven to play nice with NMaven. I wanted to see what a build system might look like in pure .NET.

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.

General Framework For Model Inheritance

Maven 3.0 uses a new standalone component that handles inheritance and interpolation of a model in any format. The model needn't even be XML based. If you can translate your model into a list of property-value pairs, you can use this framework for inheritance.

To Mercury and Beyond

Last month, I went down to Sonatype's offices to meet up with the guys down there. I soon found myself being cornered by a serious looking Oleg, who wanted Maven integration with Mercury ASAP, and who I believed I promised Maven integration two weeks prior. We setup our laptops outside to work on Mercury, in what later proved to be a mistake as the burning California sun beat down on us.

MASA: Building Android Applications with Maven

When I first downloaded the SDK for Android nearly a year ago, I was greeted by an ant build file. I wanted to start developing Android applications but wasn't willing to go back to ant to do it; so I decided to throw together a quick set of plugins to build Android with Maven: MASA Plugins. The name MASA comes from PKD's book We Can Build You. In the book, there is a company MASA Associates (Multiplex Acoustical System of America), responsible for building simulacra (or androids). PKD's MASA is also a play on the word NASA, and as we all know, Maven is as simple as rocket science.

On Maven Model Transforms and C#

Maven 3.0 does all project model processing on a canonical data format, consisting of nearly 500 property values. Using a canonical data format makes it easy to do bidirectional transforms between the Maven pom and other model types.

To transform from an XML format to the property format, you can take any stream containing data in XML and pass it the static method ModelMarshaller.marshallXmlToModelProperties. In the case of the Visual Studio's C# project file, it would look something like:

Maven 3.0 Project Model and Mixins

The Apache Maven project model consists of a fairly rich model structure, consisting of 465 possible elements, specifying everything from the plugins Maven uses to build the project to the dependencies it needs for compiling. How Maven processes the model prior to a build can be a little confusing, dealing with the inheritance of parent poms (or the super pom), the applying of profiles, the merging in of dependency management information, to name just a few of the operations.

Back in May, Jason started talking to me about adding in mixin support for the pom, and it became clear that we needed to reconsider the Maven 2.0 design of project builder so that we could support such features. Maven 2.0 took the approach of merging trees of information (XML nodes), a perfectly reasonable approach for single inheritance. For things like mixins and multiple pom inheritance, linearizing the information proves a much simpler approach. In this post I discuss the ramifications of linearizing POM information to support multiple inheritance for POMs.