Developers may want to write Maven plugins in various languages (C#, Ruby, etc) and have those plugins executed within their native runtime environments. There is no standard way of getting Maven specific information such as the pom, base directory path or local repository path into these non-Java plugins.


NMaven provides .NET support by reading the attributes (annotations) within the C# class file and creating a Java binding class with matching annotations and fields. Maven then injects the appropriate values into the Mojo written in Java. The NMaven framework knows how to call the .NET plugin as an external process. This involves saving the pom.xml file, creating another file containing the custom field information and finally telling the .NET process the location of the pom.xml and field info file.

I don't think the Java binding class is an ideal solution. I would like to see 1) a specification defining the messages interaction and format that handles passing of Maven field information to external processes and 2) a general framework implementing this spec from the Maven (Java) side.