Как я могу запустить «Импорт проекта Maven» из моего плагина Eclipse?

1

Я разработал свой собственный плагин eclipse, который создает новый пользовательский мастер. в конце мастера, как только все задачи будут выполнены, я хочу запустить мастер "Импорт maven project".

например, для обычного проекта я могу сделать что-то подобное

        IWizard wizard = new ExternalProjectImportWizard(page1.getTxtPathLocation().getText());

        WizardDialog dialog = new WizardDialog(getShell(), wizard);
        dialog.open();

каково имя класса для мастера импорта эквивалентов maven?

Большое спасибо.

Теги:
plugins
eclipse-plugin

1 ответ

1
Лучший ответ

Класс - MavenImportWizard:

org.eclipse.m2e.core.ui.internal.wizards.MavenImportWizard

и является частью плагина m2e.


Как найти это через Google/grepcode

  1. Google grepcode import existing maven project
    приводит вас к plugin.properties, где вы видите следующую строку:

    m2.wizard.import.description    =   Import Existing Maven Projects
    
  2. В том же проекте в grepcode вы видите файл plugin.xml с фрагментом, который содержит имя класса:

    <wizard id="org.eclipse.m2e.core.wizards.Maven2ImportWizard"
            class="org.eclipse.m2e.core.ui.internal.wizards.MavenImportWizard"
            icon="icons/import_m2_project.gif"
            category="org.eclipse.m2e"
            name="%m2.wizard.import.name">
       <description>%m2.wizard.import.description</description>
    </wizard>
    

Как создать экземпляр мастера импорта в общем виде

Как отметил Грег, класс находится во internal пакете и не должен использоваться напрямую. Вместо этого вы должны использовать API Eclipse для получения дескриптора мастера по его идентификатору, а затем создать экземпляр мастера с помощью дескриптора. Вы найдете идентификатор дескриптора мастера в файле plugin.xml (см. Выше). Это org.eclipse.m2e.core.wizards.Maven2ImportWizard в вашем случае.

Здесь фрагмент кода, который выполняет задачу:

final String MAVEN_IMPORT_WIZARD_ID = 
    "org.eclipse.m2e.core.wizards.Maven2ImportWizard";

final IWizardDescriptor mavenImportWizardDescriptor = 
    PlatformUI
    .getWorkbench()
    .getImportWizardRegistry()
    .findWizard(MAVEN_IMPORT_WIZARD_ID);

if (mavenImportWizardDescriptor != null) {
    final IWizard mavenImportWizard = mavenImportWizardDescriptor.createWizard();
    final WizardDialog mavenImportWizardDialog = new WizardDialog(getShell(), mavenImportWizard);
    mavenImportWizardDialog.open();
}
else {
    // Wizard not found - e.g. if m2e is not installed. 
    // Notify user. 
}

Смотрите также:

  • 1
    Обратите внимание, что, поскольку это внутренний класс, вы не должны его использовать!
  • 0
    Спасибо Алекс, я сделаю это. @ greg-449, у тебя есть альтернатива? имейте в виду, что то, о чем я прошу, является требованием, поэтому так или иначе мне нужно запустить этот мастер.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню