書きかけです!!!!!
J2SE 5.0からAnnotationが導入されました。これはソースに注釈をつけるための機能ですが、この注釈を解釈していろいろな操作*1を行うAPT(Annotation Processing Tool)というツール(注釈プロセッサっていってますね)もJDK 5.0と一緒に配布されています。*2
さて今回はこれをEclipseプラグインで制御する方法を調べました。色々とめんどくさいです。。
稼動確認はEclipse3.3で行いました。*3
やってみる †
やってみます。Annotationは
package nu.mine.kino.annotations;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface SpringBean {
boolean singleton() default false;
}
みたいなモノを作ってみました。このAnnotationがされたクラスは、そのクラス名のBeanIDにしてSpringのBean定義ファイルに出力されるようにしてみます*4。このAnnotationはjar化しておいて、後に出てくるプラグインにも、このAnnotationを使用するプロジェクトにも配置します。
これを読みこんでパースする処理は、APTのフレームワークを使用します。具体的には
- com.sun.mirror.apt.AnnotationProcessorFactory?
- com.sun.mirror.apt.AnnotationProcessor?
などの実装クラスを作成すればOKです。詳細は後述したいと思います。
さて、上のインタフェースの実装がもうあるとして、Eclipseのプラグインを作ってみます。プラグインは
nu.mine.kino.plugin.aptsamples
というプロジェクトにします。
- MANIFEST.MF
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: APT Samples Plug-in
Bundle-SymbolicName: nu.mine.kino.plugin.aptsamples;singleton:=true
Bundle-Version: 0.0.1
Bundle-Activator: nu.mine.kino.plugin.aptsamples.Activator
Bundle-Localization: plugin
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.jdt.apt.core,
nu.mine.kino.plugin.log4j,
org.apache.ant,
org.eclipse.core.resources
Eclipse-LazyStart: true
Bundle-ClassPath: .,
beansanno.jar,
lib/commons-collections.jar,
lib/oro.jar,
lib/xjavadoc-1.1.jar,
lib/velocity-1.4.jar
- plugin.xml
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.2"?>
<plugin>
<extension
point="org.eclipse.jdt.apt.core.annotationProcessorFactory">
<factories enableDefault="true">
<factory class="nu.mine.kino.plugin.aptsamples.
SpringAnnotationProcessorFactory"/>
</factories>
</extension>
</plugin>
org.eclipse.jdt.apt.core.annotationProcessorFactory?拡張ポイントを使用しています。Javaプロジェクトの設定画面に「どのcom.sun.mirror.apt.AnnotationProcessorFactory?を使用するか」を設定する画面があるのですが、上の指定により、その画面にこのプラグインが表示されるようになります。具体的には各プロジェクトのプロパティの
Java Compiler >> Annotation Processing >> Factory Path
ですね。実際の画面はこんな感じ。
関連リンク †
この記事は
現在のアクセス:13978