2016-10-20 89 views
2

我使用「BND-Maven的插件」 https://github.com/bndtools/bnd/tree/master/maven/bnd-maven-plugin如何使用'bnd-maven-plugin'在我的OSGi捆綁包jar中添加所有第三方jar(可解析)?

開發OSGi應用程序我有很多第三方jar文件在我的項目,通過參照行家。

當我使用'maven install'創建jar包時,我會得到它,當我在felix上部署它時,它不會解決其他依賴的第三方jar。

它正在與 '行家束-插件' 與 'BND-Maven的插件' http://www.lucamasini.net/Home/osgi-with-felix/creating-osgi-bundles-of-your-maven-dependencies

POM文件中給出如下:

<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爲' 行家束-插件'

<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

在0魔術由<wrapImportPackage>;</wrapImportPackage>完成,它基本上會將所有依賴項添加爲生成的jar文件中的資源併爲您配置bundle classpath。

bnd-maven-plugin不使用POM中的指令。您必須在bnd文件中執行此操作。 This tutorial是特定於Liferay和Gradle的,但它會告訴你一個-includeresource指令的例子以及如何設置你的bundle classpath。

相關問題