2012-06-14 3 views
1

У меня возникла проблема с созданием службы OSGI с Maven. Мои pom.xml:Создайте декларативные услуги OSGI с Maven

<plugin> 
    <groupId>org.apache.felix</groupId> 
    <artifactId>maven-bundle-plugin</artifactId> 
    <version>2.0.1</version> 
    <extensions>true</extensions> 
    <configuration> 
     <instructions> 
      <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName> 
      <Service-Component>OSGI-INF/activator.xml</Service-Component> 
      <Import-Package>org.osgi.framework</Import-Package> 
     </instructions> 
    </configuration> 
</plugin> 

Когда я строю с Maven установить там генерируется файл .jar, но папка OSGI-INF не существует. Я использую плагин Eclipse и m2e. Почему папка OSGI-INF отсутствует в файле .jar?

ответ

1

Итак, если вы хотите использовать внутреннюю структуру аннотаций bnd, вам не понадобится зависимость от плагина felix scr.

<dependency> 
     <groupId>biz.aQute</groupId> 
     <artifactId>bndlib</artifactId> 
     <version>1.50.0</version> 
    </dependency> 

После того, как вы сделаете это, вы можете сказать BND для создания XML декларативные услуг с помощью этой опции конфигурации в Maven-расслоением-плагин:

<Service-Component>*</Service-Component> 

Это будет генерировать OSG-INF материал для вы. Аннотации немного отличаются, они задокументированы здесь: http://www.aqute.biz/Bnd/Components

Кроме того, вы импорта выглядят действительно обалденный, я рекомендовал бы это:

<instructions> 
     <Export-Package>{local-packages};version="${project.version}"</Export-Package> 
     <Import-Package>*</Import-Package> 
     <Private-Package>{local-packages}</Private-Package> 
     <Service-Component>*</Service-Component> 
    </instructions> 
+0

Есть ли способ, что я могу использовать готовый активатор. xml без аннотаций? –

+0

хорошо, да, но аннотации действительно приятные, автоматически генерируют все для вас;) – bluejekyll

+0

поэтому в моем проекте у нас была аналогичная проблема, попробуйте следующее: <_include> OSGI-INF/activator.xml bluejekyll