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.
Subscribe to:
Posts (Atom)