IProject copyProject(IProject project, IPath destinationPath, URI locationURI, IProgressMonitor monitor) throws CoreException { monitor.setTaskName(UndoMessages.AbstractCopyOrMoveResourcesOperation_copyProjectProgress); boolean open = project.isOpen(); if (!open) { // Must open project in order to get the original project // description for performing the undo. project.open(null); } originalProjectDescription = new ProjectDescription(project); IProjectDescription description = project.getDescription(); // Set the new name and location into the project's description description.setName(destinationPath.lastSegment()); description.setLocationURI(locationURI); project.copy(description, IResource.FORCE | IResource.SHALLOW, monitor); // Close the original project if it was closed when we started. if (!open) { project.close(null); } // Now return the handle of the new project return (IProject) getWorkspace().getRoot().findMember(destinationPath); } }
public static IProject copyProject(String projectName) throws CoreException { IProgressMonitor m = new NullProgressMonitor(); IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot(); IProject project = workspaceRoot.getProject(projectName); IProjectDescription projectDescription = project.getDescription(); String cloneName = projectName + "_copy"; // create clone project in workspace IProjectDescription cloneDescription = workspaceRoot.getWorkspace().newProjectDescription(cloneName); // copy project files project.copy(cloneDescription, true, m); IProject clone = workspaceRoot.getProject(cloneName); // copy the project properties cloneDescription.setNatureIds(projectDescription.getNatureIds()); cloneDescription.setReferencedProjects(projectDescription.getReferencedProjects()); cloneDescription.setDynamicReferences(projectDescription.getDynamicReferences()); cloneDescription.setBuildSpec(projectDescription.getBuildSpec()); cloneDescription.setReferencedProjects(projectDescription.getReferencedProjects()); clone.setDescription(cloneDescription, null); return clone; }