Windmill は DonQuixote のプラグインプロジェクトのテンプレートを生成す るためのプロジェクトです.Windmill を実行するとサンプルのプラグインプ ロジェクトが作成されます.そこから必要な箇所を変更し,ユーザ独自のプラ グインを作成することが可能です.
現在のところ,Windmill が作成するプロジェクトは Maven や Maven2 にそ れぞれ対応させることが可能です.デフォルトは Maven2 になっています.
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 が依存するライブラリは以 下の通りです.
まず,最初に基本的なプロジェクトのテンプレート生成方法について述べま す.
プロジェクト名は 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 のプラグインディレクトリに置く と認識されます.
次に 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