#author("2021-12-14T02:32:07+00:00","","") // 下階層用テンプレート #topicpath ---- //ここにコンテンツを記述します。 #contents 書きかけです!!!!! J2SE 5.0からAnnotationが導入されました。これはソースに注釈をつけるための機能ですが、この注釈を解釈していろいろな操作((なんか検証したり、別ソース作ったり、いろいろ、、、))を行うAPT([[Annotation Processing Tool>http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/apt/GettingStarted.html]])というツール(注釈プロセッサっていってますね)もJDK 5.0と一緒に配布されています。((ちなみにJavaSE 6からはコンパイラが直接注釈を解析できるようになるみたいですね。コンパイラにオプションをつけてProcessorクラスをコンパイルするとチェックが実行されるようです。http://www.techscore.com/tech/J2SE/JavaSE6/8.html )) さて今回はこれをEclipseプラグインで制御する方法を調べました。色々とめんどくさいです。。 稼動確認はEclipse3.3で行いました。((Eclipse 3.2系ではFactoryを設定する画面が出てこず、うまくいきませんでした。)) **やってみる [#wd8dca8a] やってみます。Annotationは package nu.mine.kino.annotations; @Target(ElementType.TYPE) @Retention(RetentionPolicy.SOURCE) public @interface SpringBean { boolean singleton() default false; } みたいなモノを作ってみました。このAnnotationがされたクラスは、そのクラス名のBeanIDにしてSpringのBean定義ファイルに出力されるようにしてみます((本質じゃないんで、プロパティなどのInjectionとかはムシしてみる))。この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 ですね。実際の画面はこんな感じ。 #ref(pre01.png) ***関連リンク [#dca7e7c1] -[[Introduction to Annotation Processing in Eclipse>http://www.eclipse.org/jdt/apt/introToAPT.html]] -[[Help - Eclipse SDK>http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.jdt.doc.isv/reference/apt/overview-summary.html]] -[[Luca Zoni - ConditionAnnotatoin>http://www.ce.unipr.it/~lzoni/conditionAnnotation.html]] ---- この記事は #vote(おもしろかった[0],そうでもない[2]) #vote(おもしろかった[1],そうでもない[2]) #comment #topicpath SIZE(10){現在のアクセス:&counter;}