By default NMaven uses the .NET executables on the path (for example, by starting a "SDK Command Prompt" session from the Windows Start Menu). To configure a particular toolchain to use, or to avoid the path configuration requirement you need to configure a Maven toolchain.
Toolchains are a new feature in Maven 2.0.9 and above. For more information about the feature in general, see Using Toolchains.
There are two steps to this: adding the toolchain plugin to your project (or a common parent), and creating a ~/.m2/toolchains.xml file (alongside your settings.xml file). The following examples show the configuration for the currently available toolchains.
For Microsoft builds you will need both Microsoft .NET Framework (1.1+) *and* NET Framework SDK.
To use the Microsoft SDK, configure the Toolchains plugin like the following:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-toolchains-plugin</artifactId> <version>1.0-SNAPSHOT</version> <executions> <execution> <phase>validate</phase> <goals> <goal>toolchain</goal> </goals> </execution> </executions> <configuration> <toolchains> <dotnet> <vendor>MICROSOFT</vendor> </dotnet> </toolchains> </configuration> </plugin> </plugins> </build>
This will select the MICROSOFT vendor from the toolchains file. This requires adding configuration such as the following to your ~/.m2/toolchains.xml file:
<?xml version="1.0" encoding="UTF8"?> <toolchains> <toolchain> <type>dotnet</type> <provides> <frameworkVersion>2.0</frameworkVersion> <vendorVersion>2.0.50727</vendorVersion> <vendor>MICROSOFT</vendor> <id>.NET Framework 2.0</id> </provides> <configuration> <csharpCompiler>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe</csharpCompiler> <nunitConsole>C:\Program Files\NUnit 2.4.8\bin\nunit-console.exe</nunitConsole> <installRoot>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727</installRoot> <sdkInstallRoot>C:\Program Files\Microsoft.NET\SDK\v2.0</sdkInstallRoot> </configuration> </toolchain> </toolchains>
For Mono builds, you will need Mono (tested with 1.2.3.1+).
To use the Mono SDK, configure the Toolchains plugin like the following:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-toolchains-plugin</artifactId> <version>1.0-SNAPSHOT</version> <executions> <execution> <phase>validate</phase> <goals> <goal>toolchain</goal> </goals> </execution> </executions> <configuration> <toolchains> <dotnet> <vendor>MONO</vendor> </dotnet> </toolchains> </configuration> </plugin> </plugins> </build>
This will select the MONO vendor from the toolchains file. This requires adding configuration such as the following to your ~/.m2/toolchains.xml file:
<?xml version="1.0" encoding="UTF8"?> <toolchains> <toolchain> <type>dotnet</type> <provides> <frameworkVersion>2.0</frameworkVersion> <vendorVersion>1.9.1</vendorVersion> <vendor>MONO</vendor> <id>Mono 1.9.1</id> </provides> <configuration> <csharpCompiler>C:\Program Files\Mono-1.9.1\lib\mono\1.0\mcs.exe</csharpCompiler> <nunitConsole>C:\Program Files\NUnit 2.4.8\bin\nunit-console.exe</nunitConsole> <installRoot>C:\Program Files\Mono-1.9.1</installRoot> <sdkInstallRoot>C:\Program Files\Mono-1.9.1\lib\mono\2.0</sdkInstallRoot> </configuration> </toolchain> </toolchains>