private IJavaProject createProject() throws Exception
{
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
String projName = getProjectName();
if(projName == null || projName.trim().length() == 0)
return null;
//create eclipse project
IProject project = root.getProject(projName);
if(project.exists())
project.delete(true, null);
project.create(null);
project.open(null);
//set the java project nature
IProjectDescription description = project.getDescription();
description.setNatureIds(new String[] { JavaCore.NATURE_ID});
project.setDescription(description, null);
//create java project
IJavaProject javaProject = JavaCore.create(project);
//add bin/ouput folder
IFolder binFolder = project.getFolder("bin");
binFolder.create(false, true, null);
javaProject.setOutputLocation(binFolder.getFullPath(), null);
//add libs to project class path
List<IClasspathEntry> entries = new ArrayList<IClasspathEntry>();
IVMInstall vmInstall = JavaRuntime.getDefaultVMInstall();
LibraryLocation[] locations = JavaRuntime.getLibraryLocations(vmInstall);
for (LibraryLocation element : locations) {
entries.add(JavaCore.newLibraryEntry(element.getSystemLibraryPath(), null, null));
}
javaProject.setRawClasspath(entries.toArray(new IClasspathEntry[entries.size()]), null);
//create source folder
IFolder sourceFolder = project.getFolder("src");
sourceFolder.create(false, true, null);
IPackageFragmentRoot srcRoot = project.getPackageFragmentRoot(sourceFolder);
IClasspathEntry[] oldEntries = project.getRawClasspath();
IClasspathEntry[] newEntries = new IClasspathEntry[oldEntries.length + 1];
System.arraycopy(oldEntries, 0, newEntries, 0, oldEntries.length);
newEntries[oldEntries.length] = JavaCore.newSourceEntry(srcRoot.getPath());
project.setRawClasspath(newEntries, null);
return javaProject;
}
private String getProjectName()
{
String init_value = "project_" + System.currentTimeMillis();
InputDialog dialog = new InputDialog(getShell(), "Java Project", "Provide project name ..", init_value, new IInputValidator() {
public String isValid(String newText)
{
char[] array = newText.toCharArray();
for (int i = 0; i < array.length; i++)
{
if(!Character.isJavaIdentifierPart(array[i]))
return "Cannot contain special characters !!";
}
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
IProject[] projs = root.getProjects();
for (int i = 0; i < projs.length; i++) {
if(projs[i].getName().equalsIgnoreCase(newText))
return "Project already exist !!";
}
/*
Not checking for special Win32 names like con etc.
*/
return null;
}
});
if(dialog.open() == Dialog.CANCEL)
return null;
return dialog.getValue();
}
Wednesday, April 18, 2012
Programmatically create eclipse Java project
Following is a brief code snippet for creating an eclipse Java project using core JDT API.