Обновить файл проекта в Eclipse - PullRequest
0 голосов
/ 09 апреля 2020

Я использую эту библиотеку

org.eclipse.core.resources
Я пытаюсь изменить имя проекта в файле проекта, чтобы оно совпадало с реальным именем проекта программно. Я импортировал проект из репозитория SVN, а затем переименовал папку, в которой находится этот проект, с новым именем, но если я переименую sh рабочую область, имя в файле проекта не изменится. Даже если я скажу ему конкретно:
IProjectDescription description = ResourcesPlugin.getWorkspace().loadProjectDescription(new Path(targetProject.replace("\\", "/") + "/.project"));
description.setName(targetProject.substring(targetProject.lastIndexOf("com.")));  // here the name in description is changed
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(description.getName());  // a get project from the actual description name that match with the folder name
if (!project.exists()) {
    project.create(description, monitor);
}
if (!project.isOpen()) {
    project.open(monitor);
}
project.setDescription(description, monitor);  // force the name in project to change
project.refreshLocal(IProject.DEPTH_INFINITE, monitor);  // refresh project in case that matter

// Check change
System.out.println(project.getDescription().equals(descritpion));  // false !
System.out.println(project.getDescription().getName().equals(description.getName())); // false !

Как будто ничто не может изменить это имя. Имя в рабочей области - это новое имя. Я также пытаюсь снова закрыть и открыть проект, но ничего не происходит.

Что не так в этом коде? Любая помощь будет признательна.

Спасибо.

Ответы [ 2 ]

1 голос
/ 09 апреля 2020

Я понял, как это сделать:

          IProjectDescription description = ResourcesPlugin.getWorkspace().loadProjectDescription(new Path(targetProject.replace("\\", "/") + "/.project"));
          description.setName(targetProject.substring(targetProject.lastIndexOf("com.")));
          IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(description.getName());
          if (!project.exists()) {
            project.create(description, monitor);
          }
          if (!project.isOpen()) {
            project.open(monitor);
          }
          project.move(description, IProject.DEPTH_ONE, monitor);  // This change name

Спасибо за вашу помощь.

0 голосов
/ 09 апреля 2020

JavaDo c для IProjectDescription.setName говорит:

Установка имени для описания и последующая установка описания для проекта не имеет никакого эффекта; новое имя игнорируется.

Создание нового проекта с именем описания, которое не совпадает с именем дескриптора проекта, приводит к игнорированию имени описания; проект будет создан с использованием имени в дескрипторе.

Так что вы не можете сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...