首先在当前 IWorkspace 中获得 IProject 的实例,并通过 create() 方法在文件系统中创建该 Project 。
清单 11. 生成项目
// 生成的项目的名称
String _projectName = "demo";
IWorkspace workspace = ResourcesPlugin.getWorkspace();
// 从当前 workspace 中获取 IProject 实例,其名称为 demo
IProject project = workspace.getRoot().getProject(_projectName);
// 创建项目
project.create(null);
// 对该项目进行描述,其内容输出到 .project 文件
IProjectDescription description = workspace
.newProjectDescription(project.getName());
description.setNatureIds(new String[] { JavaCore.NATURE_ID });
description.setLocation(null);
// 在当前 Workspace 环境中打开该项目
project.open(null);
// 在项目中设置刚设置的项目描述
project.setDescription(description, null);
通过 JavaCore 将当前项目转换为 JavaProject,并将其原有的 source root 删除,由于 Project 默认的 source root 为项目的根目录而非 JavaProject 使用的项目下的 src 路径,需要对其进行修改,本文由于在后面将会介绍对 source root 的创建,因此在这里采用删除的方式,实际创建时可依据需要进行修改。
清单 12. 生成 JAVA 项目
// 在 JavaCore 中将当前 IProject 创建为 IJavaProject
IJavaProject javaProject = JavaCore.create(project);
// 获得生成项目中的 classpath 信息,并将项目中的 source 目录信息删除
// 由于在下面将重新生成项目的 source root,因此为了保证不重复,
// 在这里将多余的错误 source root 删除
List<IClasspathEntry> classpath = new UniqueEList<IClasspathEntry>(
Arrays.asList(javaProject.getRawClasspath()));
for (int i = 0, len = classpath.size(); i < len; i++) {
IClasspathEntry entry = classpath.get(i);
if (entry.getEntryKind() == IClasspathEntry.CPE_SOURCE
&& ("/" + project.getName()).equals(entry.getPath()
.toString())) {
classpath.remove(i);
}
}
创建 JavaProject 的 classpath 信息,每个 IClasspathEntry 对应 classpath 中的一条细目,并将其加入到 classpath 中。
清单 13. 生成 Classpath
// 添加新的 classpath 细目,包括 source 目录,bin 目录运行时的 container
// 以及其他需要添加的如变量(variable),jar 包(library)等等
// 生成效果为 <classpathentry kind="src" path="src"/>
IClasspathEntry classpathEntry = JavaCore.newSourceEntry(new Path("/"
+ project.getName() + "/src"));
// 生成效果为
// <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
IClasspathEntry jreClasspathEntry = JavaCore
.newContainerEntry(new Path(
"org.eclipse.jdt.launching.JRE_CONTAINER"));
classpath.add(classpathEntry);
classpath.add(jreClasspathEntry);
// 在此处可以创建其他需要的 classpath 信息
基于Eclipse平台的代码生成技术(9)
时间:2012-02-26 IBM 吕锋 于沛 王轩
通过 IFolder 在文件系统中创建项目需要的 src 文件夹和 bin 文件夹。
清单 14. 生成 SRC 文件夹
// 在 JavaProject 的文
|