いつかMavenと呼ばれたい@Wiki

NMavenを試食する

最終更新:

gaoqiao1

- view
メンバー限定 登録/ログイン
NMavenを試食する

最近、仕事で.NETに関わるようになりました。.NETの世界でもMavenを使えないものかと思っていたある日、何気なくApacheのサイトを覗いてみると、Apache Incubatorプロジェクトに、NMavenという文字が見えるではないですか!
ドキドキしながらクリックしてみると・・・まさしく.NET用Mavenの登場でした。

まだ生まれたばかりのツールで情報も少なく、少し触ってみてのファースト・インプレッション程度の内容ではありますが、NMavenを紹介したいと思います。
私自身、.NETについては初心者程度のレベルですので、とんちんかんなコメントもあるかとは思いますが、そこは優しく間違いを指摘してくださいな。


NMavenは.NETアプリケーションをビルドするためのMaven2用プラグイン集になります。NMavenと聞くと.NETによる別の実装のように思っていたのですが、NAntのようにJavaで書かれたプログラムを.NET(C#)で書き直したものではありません。したがってその実行にはJavaと、Maven2本体が必要です。(アンチJava派の方には残念でした?!)
サポートする.NETプラットフォームとしては、本家Microsoft以外に、MonoプロジェクトやDotGNUまで対応しているようです。バージョンは1.1から2.0、3.0まで、そして使用できる言語としては、現在C#とVBの名前があがっています。
そのほか、以下の機能が用意されています。

  • NUnitのサポート
  • リソースの生成と組み込み
  • 言語とPOMの内容に基づくAssemblyInfo.*の自動生成
  • WEBアプリケーションのパッケージングとデプロイ
  • XSDとWSDの生成
  • 新たに別のコンパイラやツールをプラガブルに組み込む仕組み


なにはともあれ、さっそく使ってみましょう。
なお、動作確認はWindows上で行いました。Linux上でも、Monoを使って環境を構築できるようですが、今回は試していません。
環境の構成は以下の通りです。

  • WindowsXP sp2
  • Microsoft .NET Framework 2
  • Sun Java 1.5
  • Maven 2.0.4
  • NUnit 2.2.8

NMavenにはまだバイナリ形式のディストリビューションは用意されていません。Subversionのリポジトリからソースコードをチェックアウトして、自分でビルドする必要があります。(正式リリースされれば、他のMaven2プラグインと同様に、リモートリポジトリからビルド時に自動的にインストールされるようになるでしょう。)

NMavenのソースは以下のURLよりチェックアウトします。


チェックアウトしたルートディレクトリにある、bootstrap-build.batを実行します。
bootstrap-build.batの中を見ると、Mavenを実行してビルドしているのがわかります。
ビルドは特に問題なく終わると思います。
ビルドされたプラグインはMaven2のローカルリポジトリにインストールされます。

%HOMEPATH%\.m2\repository\org\apache\maven\dotnet


さて、ここで.NET初心者である私はこまりました。
何か簡単なサンプルでも作ってビルドすればいいのでしょうが、どのようにすればいいのかわかりません。またNMavenのサイトの情報も次に進むには十分とはいえません。

チェックアウトしたソースを見ると、integration-tests\testsというフォルダがあります。
ここには、C#やVBの小さなプロジェクトフォルダがたくさん用意されています。NUnitを使った単体テストを走らせるプロジェクトもあります。
非常に小さいプロジェクトばかりですが、ここにあるPOMを読むのが手っ取り早い入門になると思います。

it.batを実行すると、これらのプロジェクトをビルドする(=NMavenを走らせる)ことができます。
なお、it.batをうまく実行するには、C#コンパイラ(csc.exe)、VBコンパイラ(vbc.exe)、リソースジェネレータ(resgen.exe)など、.NET Frameworkのツールへのパスが通っている以外に、NUnitへのパスが設定されている必要があります。

また私の環境では、プロジェクトit0012の実行で以下のエラーがでました。

Embedded error: NMAVEN-104-001: One of more of the parameters is null: Vendor = DotGNU, Vendor Version = null, Framework Version = 2.0.50727

pom.xmlの以下の記述に問題があるようです。

<plugin>
  <groupId>org.apache.maven.dotnet.plugins</groupId>
  <artifactId>maven-compile-plugin</artifactId>
  <extensions>true</extensions>
  <configuration>
    <vendor>DotGNU</vendor>
  </configuration>
</plugin>

正しくビルドできているプロジェクトを見ると"vendor"タグの内容がMONOになっています。プロジェクトit0012のpom.xmlを修正して実行するとうまく動作しました。

<plugin>
  <groupId>org.apache.maven.dotnet.plugins</groupId>
  <artifactId>maven-compile-plugin</artifactId>
  <extensions>true</extensions>
  <configuration>
    <vendor>MONO</vendor>
  </configuration>
</plugin>

このときのログを見ると、先ほどのエラー箇所は以下のように表示されます。

[INFO] NMAVEN-066-012: Found Vendor = Vendor = MICROSOFT, Vendor Version = 2.0.50727, Framework Version = 2.0.50727, Executable

Vendorのところが、MONOを指定したにも関わらず、MICROSOFTになっています。私の環境にはMonoはインストールされていないので、当然といえば当然なのですが。試しに"vendor"タグをMicrosoftにしてビルドしてもうまく動作しました。

あと、NUnitを使った単体テストを行うプロジェクトがあるのですが、これはまだうまく動かせていません。


.NETプラットフォームを使った開発では、VisualStudioが開発環境のデファクト・スタンダードとなっています。VisualStudioは、個人のデスクトップにおいては、とても快適な環境を提供してくれます。
一方で、多くの開発者の参加する大規模プロジェクトにおいて、その巨大な開発成果物を統合管理するには、とても高価なツールを購入したり、人手で管理する必要があったのではないでしょうか。

NMavenの出現は、こういった.NETプラットフォームにおける大きな穴を埋める有効なツールとなるのではないかと、今から大きな期待を持っています。


名前:
コメント:

すべてのコメントを見る
目安箱バナー