2016-10-20 4 views
2

Я занимаюсь разработкой приложения OSGi с помощью «BND-Maven-плагин» https://github.com/bndtools/bnd/tree/master/maven/bnd-maven-pluginКак добавить все сторонние банки (разрешимые) в мою банку с пакетом OSGi с помощью «bnd-maven-plugin»?

У меня есть много третьей партии банок в моем проекте, который ссылается через Maven.

Когда я создаю пакет jar с помощью «maven install», я его получу, и когда я развожу его на felix, он не будет разрешен другими зависимыми сторонними банками.

Он работает с 'Maven-расслоением-плагин' http://www.lucamasini.net/Home/osgi-with-felix/creating-osgi-bundles-of-your-maven-dependencies

POM файл с 'BND-Maven-плагин' приведены ниже:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>XYZ.Models</groupId> 
    <artifactId>XYZ.Models</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <dependencies> 

     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-lang3</artifactId> 
      <version>3.4</version> 
     </dependency> 


     <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --> 
     <dependency> 
      <groupId>com.google.code.gson</groupId> 
      <artifactId>gson</artifactId> 
      <version>2.2.4</version> 
     </dependency> 

    </dependencies> 

    <build> 
     <sourceDirectory>src</sourceDirectory> 
     <plugins> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>biz.aQute.bnd</groupId> 
       <artifactId>bnd-maven-plugin</artifactId> 
       <version>3.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.0.0</version> 
       <configuration> 
        <archive> 

         <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile> 
        </archive> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

Ниже один работает POM для ' Maven-пачке плагин '

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>XYZ.Models</groupId> 
    <artifactId>XYZ.Models</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <dependencies> 

     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-lang3</artifactId> 
      <version>3.4</version> 
      <scope>provided</scope> 
     </dependency> 


     <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --> 
     <dependency> 
      <groupId>com.google.code.gson</groupId> 
      <artifactId>gson</artifactId> 
      <version>2.2.4</version> 
      <scope>provided</scope> 
     </dependency> 

    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

    <profiles> 
     <profile> 
      <id>create-osgi-bundles-from-dependencies</id> 
      <build> 
       <directory>${basedir}/bundles</directory> 
       <plugins> 

        <plugin> 
         <groupId>org.apache.felix</groupId> 
         <artifactId>maven-bundle-plugin</artifactId> 
         <version>2.0.1</version> 
         <extensions>true</extensions> 
         <executions> 
          <execution> 
           <id>wrap-my-dependency</id> 
           <goals> 
            <goal>wrap</goal> 
           </goals> 
           <configuration> 
            <wrapImportPackage>;</wrapImportPackage> 
           </configuration> 
          </execution> 
         </executions> 
        </plugin> 
       </plugins> 
      </build> 
     </profile> 
    </profiles> 
</project> 
+0

Здесь, похоже, нет вопроса. –

+0

Здравствуйте @NeilBartlett Спасибо. Где я могу отправить запрос, связанный с 'bnd-maven-plugin', я не нахожу много другого, кроме вашей хорошо объясненной статьи для этого плагина. –

+1

Так почему бы вам просто не использовать * maven-bundle-plugin *, если он работает с этим? – stempler

ответ

1

магия в maven-bundle-plugin делается по <wrapImportPackage>;</wrapImportPackage>, который в основном добавит все ваши зависимости в качестве ресурсов в сгенерированный файл jar и настроит для вас путь класса пакетов.

bnd-maven-plugin не использует инструкции в ПОМ. Вы должны сделать это в файле bnd. This tutorial специфичен для Liferay и Gradle, но он покажет вам пример инструкции -includeresource и как установить пул классов.