импорт org.osgi не может быть разрешен - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь начать работу с OSGI и создать базовый пакет.

Я создал пакет с активатором в Eclipse (2019-06) и выбрал Liberty в качестве целевой среды выполнения (конечная цель - создатьрасширение Liberty)

Работает нормально, но когда я конвертирую его в Maven, Eclipse жалуется, что пакет org.osgi не может быть разрешен

Я вижу, что эта зависимость определена:

<dependency>
  <groupId>net.wasdev.maven.tools.targets</groupId>
  <artifactId>liberty-target</artifactId>
  <version>19.0.0.9</version>
  <type>pom</type>
  <scope>provided</scope>
</dependency>

Я безуспешно пытался добавить это в плагин Felix.

        <Import-Package>
            org.osgi.framework
        </Import-Package>

Пройдя некоторое время, я готов сдаться.Любая помощь будет оценена.

1 Ответ

0 голосов
/ 24 сентября 2019

Добавьте эти зависимости maven для спецификаций OSGi.

    <dependency>
        <groupId>org.osgi</groupId>
        <artifactId>osgi.core</artifactId>
        <version>6.0.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.osgi</groupId>
        <artifactId>osgi.cmpn</artifactId>
        <version>6.0.0</version>
        <scope>provided</scope>
    </dependency>

Вам также необходимо настроить плагин bnd-maven-plugin.Таким образом, ваш импорт рассчитывается автоматически.В качестве альтернативы вы можете использовать maven-bundle-plugin.(Возможно, вы уже используете это).

<plugin>
    <groupId>biz.aQute.bnd</groupId>
    <artifactId>bnd-maven-plugin</artifactId>
    <version>4.2.0</version>
    <executions>
        <execution>
            <goals>
                <goal>bnd-process</goal>
            </goals>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.1.0</version>
    <configuration>
        <archive>
           <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
        </archive>
    </configuration>
</plugin>

Это относится к разрешению ваших пакетов во время компиляции.

Кроме того, вы должны предоставить правильные пакеты во время выполнения.Это сильно зависит от того, как вы определяете свою среду выполнения.

Некоторые пакеты org.osgi приходят из самой среды OSGi.Другие должны быть установлены как связки.Имейте в виду, что вы обычно не устанавливаете спецификации как пакеты.Вместо этого вы устанавливаете реализации, которые также приносят спецификации.

...