我使用eclipse处理最初独立于eclipse创建的应用程序。因此,应用程序的目录结构显然不是对日食友好的。
我想以编程方式为应用程序生成一个项目。 .project
和.classpath
文件很容易理解,我已经了解到项目存储在<workspace>/.metadata/.plugins/org.eclipse.core.resources/.projects
不幸的是,这里的一些文件(特别是.location
)似乎是以某种二进制格式编码的。在预感中,我尝试使用ObjectInputStream
反序列化它 - 没有骰子。所以它似乎不是一个序列化的java对象。
我的问题是:有没有办法自动生成这些文件?
对于好奇,我试图反序列化.location
文件的错误如下:
java.io.StreamCorruptedException: java.io.StreamCorruptedException: invalid stream header: 40B18B81
更新:我的目标是能够使用命令行脚本或程序替换New Java Project向导。原因是所讨论的应用程序实际上是一个非常大的J2EE / weblogic应用程序,我喜欢将其分解为一个较大的(近20个)子项目集合。更复杂的是,我们对SCM使用clearcase并为每个版本创建一个新分支。这意味着我需要为我创建的每个开发视图(分支)重新创建这些项目。这通常足以自动化。
答案 0 :(得分:18)
您应该能够通过编写一个小的Eclipse插件来实现这一目标。您甚至可以将其扩展为“无头”RCP应用程序,并传递您需要的命令行参数。
创建项目的准系统代码是:
IProgressMonitor progressMonitor = new NullProgressMonitor();
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
IProject project = root.getProject("DesiredProjectName");
project.create(progressMonitor);
project.open(progressMonitor);
只需看一下导入项目向导的eclipse代码,就可以更好地了解它的用途。
答案 1 :(得分:2)
它可以从ant创建eclipse项目。
答案 2 :(得分:0)
要创建Java项目,可以使用org.eclipse.jdt.core.JavaCore
中的JavaCore。作为sourceProject
,您可以使用@James Van Huis建议的通用项目项。
IJavaProject javaSourceProject = JavaCore.create(sourceProject);