Как получить родительский модуль проекта. Вот мой код отлично работает в Eclipse PDE. Но когда я тестирую плагин (устанавливая в eclipse) с помощью тестового приложения, выбирая дочерний модуль, это условие (if (projectRoot == selectedResource)) сбывается и возвращает src и target как дочерние модули, что неверно. Любое предложение о том, как получить родительский модуль проекта.
IResource selectedResource = Resource.getSelectedProject(); // this return selected module (F/parent/child1)
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); // \R
// this is not returning parent module??
IProject projectRoot = root.getProject(selectedResource.getProject().getName());
List<IResource> childModules = new ArrayList<>();
if (projectRoot == selectedResource) { // this is coming true (parent != child)
IProject project = FileResource.getProject(selectedResource);
childModules = Resource.getChildModules(project);
} else {
childModules.add(selectedResource);
}
Ресурс.Класс
private static IResource selectedResource;
public static void setSelectedResource(IResource resource) {
selectedResource = resource;
}
public static IResource getSelectedProject() {
return selectedResource;
}
@nitind текущий выбранный проект
Я имел в виду его тип.
Тип @nitind — IResource.
IResource не имеет getSelectedProject метода. Какой тип Resource?
@nitind обновил вопрос Ресурс - это класс
@ greg-449 есть предложения по этому поводу?
Что вы подразумеваете под «модулем» - это не термин, который используют основные API-интерфейсы Eclipse. Ресурсы всегда находятся только в одном проекте, и getProject в проекте возвращает тот же проект, поэтому правильно, что == возвращает true.
@greg-449 Под модулями здесь подразумеваются подпапки. Итак, getProject возвращает тот же проект, как я могу получить корневой проект?
@ greg-449 greg-449 Я хочу сравнить родительское местоположение (P/parent) с местоположением выбранного проекта (F/parent/child1) (projectRoot == selectedResource). Это сбывается, значит, мой родительский проект настроен неправильно.
Я имею в виду для данного проекта, как я могу получить местоположение p/parent




Рабочее пространство Eclipse организовано следующим образом:
IWorkspaceRoot
- IProject
- mixture of IFolder and IFile
- IProject
- mixture of IFolder and IFile
- ... more IProjects
IFolder, в свою очередь, может содержать смесь большего количества ресурсов IFolder и IFile.
IWorkspaceRoot, IProject и IFolder все расширяют IContainer. IContainer и IFile расширяют IResource.
Метод IResource.getProject всегда возвращает верхний IProject ресурс (кроме IWorkspaceRoot).
IResource.getParent возвращает непосредственного родителя IContainer (ноль для IWorkspaceRoot)
Итак, если вам нужен родительский контейнер вызова ресурса IResource.getParent, если вам нужен верхний уровень, содержащий вызов проекта IResource.getProject.
Быстрый вопрос здесь, поэтому для данного проекта, у которого есть подмодуль (определенный в родительском pom.xml), этот подмодуль будет IProject или IFolder. Например ниже. Студент //IPoject и его подмодуль — это отдел, будет ли это Ifolder или IProject?
Модули maven не имеют ничего общего с API-интерфейсами Eclipse, это совершенно не связанные вещи. Если вы хотите работать с maven pom.xml, используйте API-интерфейсы maven.
На самом деле, я тестирую свой плагин Eclipse API в проекте на основе maven.
Хорошо, но это не означает, что модули вообще связаны с IFolder/IPoject. maven просто видит папки файловой системы, некоторые из них могут быть IFolders, некоторые могут быть IProjects.
Спасибо за разъяснение Грег
Тип @Maana IFolder/IPoject является общим для всех типов проектов и не относится только к проектам Maven. Если вы хотите отфильтровать тип проекта maven, вам, возможно, придется написать для этого собственные условия.
@Maana по дополнительным вопросам вы можете связаться со мной через LinkedIn linkedin.com/in/subashjanarthanan
При чем тут "Ресурс"?