Как настроить OSGI в IntelliJ, когда он обрабатывается Maven

Я новичок в OSGI.

Я действительно могу использовать любое руководство, которое я могу получить относительно IntelliJ IDEA/OSGI/Maven/Sling.

Таким образом, настоящий плагин Felix умирает, когда я его загружаю. Очевидно, он не поддерживается и больше не совместим с последней версией, под которой я подразумеваю IntelliJ IDEA 13.

Итак, я настроил фреймворк на felix-framework-4.2.1, и это работает нормально. Меня больше всего беспокоит то, что если я применю фасет OSGI к пакету, настройки, кажется, указывают, что он изменит пакет. Поскольку у нас это настроено в Maven, я не думаю, что мы этого хотим. Источником фасета, похоже, является плагин Osmorc. Когда я использовал его раньше, были жалобы на некоторые пакеты в maven, которые не были включены OSGI, и IDE хотела указать на специальный репозиторий Spring для зависимостей jar с поддержкой OSGI.

Поскольку мы делаем это в Maven, стоит ли мне вообще возиться с Osmorc? Есть ли лучший способ управления OSGI в IntelliJ IDEA? Удобно знать, какие пакеты поддерживают OSGI, но ошибка для этого? Действительно? В частности, я имею в виду «Пакет не экспортируется зависимостями пакета», отображаемый при импорте и аннотациях.


person user447607    schedule 30.01.2014    source источник


Ответы (2)


Мое личное наблюдение с Intellij IDEA 13 заключается в том, что инспектор проекта OSGI немного более агрессивен, когда дело доходит до профилирования ваших классов, которые используют классы, экспортированные не из OSGI. При этом способ обойти это — настроить уровень серьезности инспектора. Это позволяет вам использовать тот же подход на основе OSGI, который вы использовали в Intellij IDEA 12.

Для этого перейдите в настройки проекта (на Mac: Command+,) и перейдите к следующему узлу:

Inspections --> OSGI --> Package accessibility

После выбора вы сможете изменить уровень серьезности с ошибки на предупреждение.

Выполнение этого изменения необходимо для нескольких изменений в вашем pom.xml:

<dependencies>
.
.
    <dependency>
      <groupId>com.pkg.name</groupId>
      <artifactId>some-non-osgi-artifact</artifactId>
      <version>0.1-EXAMPLE</version>
   </dependency>
</dependencies>

<build>
    <plugins>
    .
    .
        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>${maven-bundle-plugin.version}</version>
            <extensions>true</extensions>
            <configuration>
                <instructions>
                    <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                    <Bundle-Version>${project.version}</Bundle-Version>
                    <Export-Package>
                        you.know.what.goes.here
                    </Export-Package>
                    <Private-Package>you.know.what.goes.here</Private-Package>
                    <Import-Package>
                        *
                    </Import-Package>
                    <Embed-Dependency>some-non-osgi-artifact;scope=compile|runtime;inline=false</Embed-Dependency>
                    <Embed-Transitive>true</Embed-Transitive>
                    <Embed-StripGroup>true</Embed-StripGroup>
                </instructions>
            </configuration>
        </plugin>
    </plugins>
</build>

Надеюсь, это поможет, Аджай.

person Ajay Pasricha    schedule 25.03.2014

Я думаю, что в настоящее время вам лучше всего использовать плагин пакета maven для управления вашим импортом и экспортом. Это означает, что intellij просто увидит ваши пакеты как проекты maven. Еще должны получиться правильные баночки. Я так же обрабатываю пакеты OSGi в eclipse, и все работает нормально.

Я также читал в списке рассылки разработчиков OSGi, что планируется bndtools для intellij, но это наверняка займет некоторое время.

person Christian Schneider    schedule 31.01.2014