Top / Eclipse / プラグイン開発のTIPS集 / org.eclipse.jdt.apt.core

書きかけです!!!!!

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
    ですね。実際の画面はこんな感じ。
pre01.png

関連リンク


この記事は

選択肢 投票
おもしろかった 1  
そうでもない 2  

Top / Eclipse / プラグイン開発のTIPS集 / org.eclipse.jdt.apt.core

現在のアクセス:13778


*1 なんか検証したり、別ソース作ったり、いろいろ、、、
*2 ちなみにJavaSE 6からはコンパイラが直接注釈を解析できるようになるみたいですね。コンパイラにオプションをつけてProcessorクラスをコンパイルするとチェックが実行されるようです。http://www.techscore.com/tech/J2SE/JavaSE6/8.html
*3 Eclipse 3.2系ではFactoryを設定する画面が出てこず、うまくいきませんでした。
*4 本質じゃないんで、プロパティなどのInjectionとかはムシしてみる

添付ファイル: filepre01.png 1495件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-12-14 (火) 11:32:07 (863d)