Adding Compilers You can add support for additional compilers in two different ways: [[1]] Add a compiler-plugins.xml file, similar to the examples below, in the root of each module that you are building. NMaven will pick it up and add it to the list of supported compilers. [[2]] Add a compilerPlugin entry to the master file: components/dotnet-core/src/resources/META-INF/nmaven/compiler-plugins.xml. [] Of course, if your compiler does not work with the <<>>, you will also need to create your own implementation of <<>> and add the fully-qualified class name implementation to the pluginClass tag. * compiler-plugins.xml * {{{https://svn.apache.org/repos/asf/incubator/nmaven/trunk/components/dotnet-core/src/main/resources/META-INF/nmaven/compiler-plugins.xml}compiler-plugins.xml}} is the master plugin file. * {{{http://incubator.apache.org/nmaven/components/dotnet-model/compiler-plugins/compiler-plugin.html}Compiler Plugins Model}} Example: +----+ MS-CS org.apache.maven.dotnet.executable.compiler.impl.DefaultCompiler MICROSOFT csc C_SHARP FULL 2.0.50727 1.1.4322 Windows x86 FULL out target delaysign doc keyfile keycontainer platform recurse reference addmodule win32res win32icon resource linkresource debug optimize warnaserror warn nowarn checked unsafe define langversion noconfig baseaddress bugreport codepage utf8output main fullpaths filealign pdb nostdlib lib errorreport moduleassemblyname nologo +----+ * Creating Profiles NMaven matches a plugin based on four user-specified parameters - vendor, language, framework version and profile - and on one platform parameter: operating system. Sometimes a user may want to target, say C# version 2.0.50727 but would like to use a different CompilerExecutable implementation than the standard one. The \ field gives this capability. The profile also has other uses such using a different set of command filters; or, as in the case of the COMPACT profile, specifying a new set of system assemblies. The .NET Compact Profile: +----+ MS-CS:COMPACT org.apache.maven.dotnet.executable.compiler.impl.CSharpCompilerForProfile MICROSOFT csc C_SHARP COMPACT 2.0.50727 Windows x86 C:\Program Files\Microsoft.NET\SDK\CompactFramework\v2.0\WindowsCE mscorlib System.Data System System.Drawing System.Messaging System.Web.Services System.Windows.Forms.DataGrid System.Windows.Forms Microsoft.WindowsCE.Forms System.Xml ... +----+ Adding Assembly Plugins * assembly-plugins.xml For each compiler that implements a new language, you will also need to 1) add an assembly-plugin entry to the components/dotnet-core/src/resources/META-INF/nmaven/assembly-plugins.xml file and 2) implement a new AssemblyInfoMarshaller interface (provided the default one does not work). The assembly-plugin entry consists of an <> (for traceability), a <>, which provides the fully-qualified class name of the {{{https://svn.apache.org/repos/asf/incubator/nmaven/trunk/components/dotnet-assembler/src/main/java/org/apache/maven/dotnet/assembler/AssemblyInfoMarshaller.java}AssemblyInfoMarshaller}} implementation, the <> (which should match one of the supported .NET languages within the compiler-plugins.xml) and an <> that NMaven will use in the class file name (the CS assembly plugin will generate a class file called AssemblyInfo.cs). +----+ CS org.apache.maven.dotnet.assembler.impl.DefaultAssemblyInfoMarshaller C_SHARP cs VB org.apache.maven.dotnet.assembler.impl.VBAssemblyInfoMarshaller VB vb +----+