Top / Eclipse / プラグイン開発のTIPS集 / Javaプロジェクトを操作する

Eclipse/プラグイン開発のTIPS集/ソースコードを解析するパーサASTParserでもちょっとやりましたが、パッケージ・エクスプローラからSelection経由でICompilationUnit?*1を取得することができました。その Javaソースは、何とかっていうJavaプロジェクトに属しているわけですが、Javaプロジェクト自体を操作するインタフェースもEclipseに用意されています。Javaプロジェクトを作成したり、削除したり、ソースを生成したりすることができるわけですね。以下にJavaプロジェクトを操作する方法をまとめておきます。

パッケージ・エクスプローラを見てもわかるとおり、Javaプロジェクトはツリー構造になってるわけで、よくあるコンポジットなパタンになってます。このコンポジットたち全部が拡張しているインタフェースがorg.eclipse.jdt.core.IJavaElementです。

org.eclipse.jdt.core.IJavaElement?

全ての要素が拡張しているインタフェースですね。定数を見るとわかるのですが、コンポジットは

int JAVA_MODEL = 1;
int JAVA_PROJECT = 2;
int PACKAGE_FRAGMENT_ROOT = 3;
int PACKAGE_FRAGMENT = 4;
int COMPILATION_UNIT = 5;
int CLASS_FILE = 6;
int TYPE = 7;
int FIELD = 8;
int METHOD = 9;
int INITIALIZER = 10;
int PACKAGE_DECLARATION = 11;
int IMPORT_CONTAINER = 12;
int IMPORT_DECLARATION = 13;
int LOCAL_VARIABLE = 14;
int TYPE_PARAMETER = 15;

くらい種類があるようです。

org.eclipse.jdt.core.IJavaModel?

ワークスペース内のJava要素のルートですね。IJavaElement?#getJavaModel?()で取得することができます。

org.eclipse.jdt.core.IJavaProject?

Javaプロジェクトです。 IJavaElement?#getJavaProject?() で取得することができます。よってコンポジットのどの要素からもJavaプロジェクトへの参照は得られるわけです。

org.eclipse.jdt.core.IPackageFragmentRoot?

Javaプロジェクト内のパッケージ階層のトップ要素です。たとえば

IPackageFragmentRoot root = null;
try {
  IJavaProject javaProject = element.getJavaProject();
  IPackageFragmentRoot[] roots = javaProject
      .getPackageFragmentRoots();
  for (IPackageFragmentRoot rootTmp : roots) {
    if (rootTmp.getKind() == IPackageFragmentRoot.K_SOURCE) {
      root = rootTmp;          ↑ソースディレクトリだったら
    }
  }
} catch (JavaModelException e) {
  e.printStackTrace();
}

などとしてソースディレクトリを取得することができます。

org.eclipse.jdt.core.IPackageFragment?

org.eclipse.jdt.core.ICompilationUnit?


この記事は

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

Top / Eclipse / プラグイン開発のTIPS集 / Javaプロジェクトを操作する

現在のアクセス:402


*1 Javaのソースとかですね

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS