Ошибка Eclipse с osgi + maven + maven-pax-plugin

Я пытаюсь создать пакет OSGi и интегрировать его в eclipse. Я использую maven-pax-plugin для создания пакетов. Вот шаги, которым я следую

Создаю проект osgi с помощью pax

mvn org.ops4j:maven-pax-plugin:create-project -DgroupId=org.sonatype.mcookbook -DartifactId=osgi-project -Dversion=1.0-SNAPSHOT

а затем создать бандл

mvn pax:create-bundle -Dpackage=org.sonatype.mcookbook -Dname=osgi-bundle -Dversion=1.0-SNAPSHOT

а затем попробуйте импортировать проект maven в eclipse (файл / импорт / существующий проект maven), проект пакета, созданный на втором шаге, всегда дает мне эту ошибку

maven-pax-plugin:1.5:compile (1 error)
   Execution default-compile, in org.sonatype.mcookbook/pom.xml
maven-pax-plugin:1.5:testCompile (1 error)
   Execution default-testCompile, in org.sonatype.mcookbook/pom.xml

Когда я выбираю одну из ошибок, в описании говорится

No marketplace entries found to handle Execution default-compile, in org.sonatype.mcookbook/pom.xml in Eclipse.  Please see Help for more information.

Если я проигнорирую ошибку и все равно импортирую проект, это то, на что жалуется eclipse

Plugin execution not covered by lifecycle configuration: org.ops4j:maven-pax-plugin:1.5:compile (execution: default-compile, phase: compile)

Кто-нибудь это видел? есть идеи как это исправить? Я следую этому руководству, но добавляю интеграцию с затмение. Однако обратите внимание, что если я построю его с помощью maven и вообще не использую eclipse, все будет работать нормально, проблема в eclipse / m2e

Я использую Eclipse Indigo SR2 и m2e 1.0.200


person Hilikus    schedule 12.07.2012    source источник
comment
Посмотрите этот ответ на выполнение плагина, не охваченное жизненным циклом ошибки eclipse.   -  person FrVaBe    schedule 12.07.2012


Ответы (2)


Новые версии m2eclipse требуют, чтобы каждый подключаемый модуль, влияющий на сборку, поддерживался с помощью подключаемого модуля m2eclipse. Таким образом, maven-pax-plugin еще не поддерживается. Поскольку это в основном происходит с большинством плагинов maven, я все еще использую старую версию m2eclipse. К сожалению, старая версия 0.12 была недавно удалена. Так что, вероятно, вам придется подождать, пока будет поддерживаться maven-pax-plugin.

person Christian Schneider    schedule 13.07.2012
comment
Спасибо, Кристиан. Вы знаете, что именно должен поддерживать m2e? IIUC все, что нам нужно для плагина, - это фаза для запуска его вызова, поэтому я не понимаю, что m2e должен поддерживать - person Hilikus; 13.07.2012
comment
Я думаю, что основная проблема в том, что m2e выполняет инкрементную сборку, поэтому ему нужно знать, когда запускать плагин и какие файлы меняются после запуска. Я не знаю, как это работает в деталях. - person Christian Schneider; 13.07.2012

Я избавляюсь от этой проблемы, следуя комментарию в сгенерированном POM и перемещая <extensions>true</extensions> вниз в плагин maven-bundle-plugin ниже, давая:

  ...
  <plugins>
    <plugin>
      <groupId>org.ops4j</groupId>
      <artifactId>maven-pax-plugin</artifactId>
      <version>1.4</version>
      <!--
         | enable improved OSGi compilation support for the bundle life-cycle.
         | to switch back to the standard bundle life-cycle, move this setting
         | down to the maven-bundle-plugin section
        -->
      <!-- WAS HERE -->
    </plugin>
    <plugin>
      <groupId>org.apache.felix</groupId>
      <artifactId>maven-bundle-plugin</artifactId>
      <version>1.4.3</version>
      <!--
       | the following instructions build a simple set of public/private
       | classes into an OSGi bundle
      -->
      <extensions>true</extensions> <!-- MOVED HERE :-) -->
      <configuration>
    ...

Затем обновите проект (щелкните правой кнопкой мыши имя проекта в Project Explorer: Maven -> Обновить проект ...), дождитесь завершения сборки, и ошибка исчезнет.

Надеюсь, это поможет!

person Peter Cliff    schedule 23.07.2012
comment
Именно то, что я искал. Каждый день у меня возникают разные проблемы с Maven и Eclipse: - / - person Alessandro Da Rugna; 14.05.2013