Overview

Windmill は DonQuixote のプラグインプロジェクトのテンプレートを生成す るためのプロジェクトです.Windmill を実行するとサンプルのプラグインプ ロジェクトが作成されます.そこから必要な箇所を変更し,ユーザ独自のプラ グインを作成することが可能です.

現在のところ,Windmill が作成するプロジェクトは Maven や Maven2 にそ れぞれ対応させることが可能です.デフォルトは Maven2 になっています.

How to use

Windmill の使い方は以下の通りです.必要に応じてオプションを与え,プ ロジェクト名,バイトコード処理器のクラス名を指定すると,新たな「プロジェ クト名」を持つ名前のディレクトリを作成し,プロジェクトのタイプに応じて 必要なファイルを書き出します.

usage: java -jar windmill-1.0.jar [options...] <project_name> <class_name>
 -L,--license               print Windmill LICENSE
 -V,--version               print Windmill version
 -d,--destination <DIR>     set output directory
 -f,--filter                Output bytecode processor makes
                            FilterBytecodeProcessor.
 -h,--help                  print this message
 -t,--type <PROJECT_TYPE>   Available arguments are `MAVEN', `MAVEN2',
                            `PLAIN.' default value is `MAVEN2'

また,windmill を実行するには依存ライブラリを windmill-1.x.jar を同 じディレクトリに置く必要があります.windmill が依存するライブラリは以 下の通りです.

Generate BytecodeProcessor project

まず,最初に基本的なプロジェクトのテンプレート生成方法について述べま す.

プロジェクト名は nameprinter で,クラス名が jp.cafebabe.donquixote.plugins.nameprinter.ClassNamePrinter の処理器を作成します. そのためには,以下のコマンドをタイプします.

$ java -jar /path/to/jar/windmill-1.0.jar nameprinter jp.cafebabe.donquixote.plugins.nameprinter.ClassNamePrinter

これにより,以下のディレクトリ構成でファイルが出力されます.

nameprinter
 |
 +- pom.xml
 +- src
     |
     +- main
     |   |
     |   +- java
     |   |   |
     |   |   +- jp
     |   |       |
     |   |       +- cafebabe
     |   |           |
     |   |           +- donquixote
     |   |               |
     |   |               +- plugins
     |   |                   |
     |   |                   +- nameprinter
     |   |                       |
     |   |                       +- ClassNamePrinter.java
     |   +- resources
     |       |
     |       +- META-INF
     |           |
     |           +- plugins.xml
     +- test
         |
         +- java
             |
             +- jp
                 |
                 +- cafebabe
                     |
                     +- donquixote
                         |
                         +- plugins
                             |
                             +- nameprinter
                                 |
                                 +- ClassNamePrinterTest.java

nameprinter ディレクトリに移り,mvn package とすると,雛形のままのプラ グインが作成されます.これを DonQuixote のプラグインディレクトリに置く と認識されます.

Generate FilterBytecodeProcessor project

次に FilterBytecodeProcessor のサブクラスの処理器を作成する方法につい て述べます.

プロジェクト名が deletenop で,クラス名が jp.cafebabe.donquixote.plugins.deletenop.NopDeleteProcessor として,この処理機に はフィルタリングの機能を持たせたい場合,以下のようなコマンドライン引数 を与えます.--filter オプションを渡すことで FilterBytecodeProcessor プ ロジェクトを作成することができます.

$ java -jar /path/to/jar/windmill-1.0.jar --filter deletenop jp.cafebabe.donquixote.plugins.deletenop.NopDeleteProcessor

これにより,以下のようなディレクトリ構成でファイルが出力されます.

deletenop
 |
 +- pom.xml
 +- src
     |
     +- main
     |   |
     |   +- java
     |   |   |
     |   |   +- jp
     |   |       |
     |   |       +- cafebabe
     |   |           |
     |   |           +- donquixote
     |   |               |
     |   |               +- plugins
     |   |                   |
     |   |                   +- deletenop
     |   |                       |
     |   |                       +- NopDeleteProcessor.java
     |   +- resources
     |       |
     |       +- META-INF
     |           |
     |           +- plugins.xml
     +- test
         |
         +- java
             |
             +- jp
                 |
                 +- cafebabe
                     |
                     +- donquixote
                         |
                         +- plugins
                             |
                             +- deletenop
                                 |
                                 +- NopDeleteProcessorTest.java