2017-11-25 9 views
1

maven bundleプラグインを使用して、単一のバンドルにtibjms.jarとjavax.jms-api-2.0.jarをバンドルしたいと思います。 tibjms.jarは私が最初に私の地元のレポにこれを追加しましたMavenのリポジトリではありませんので:サードパーティ製のjarファイルをMavenにバンドルするには?

mvn install:install-file -Dfile=/home/riyafa/Documents/Workspace/Support/NNINSURANCESUB-17/tibco/libs/jms-2.0.jar -DgroupId=com.tibco -DartifactId=tibjms -Dversion=4.4.0 -Dpackaging=jar -DgeneratePom=false 

それから私は、次のポンポンのファイルを作成し、それを建て:

<?xml version="1.0" encoding="UTF-8"?> 
<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>org.riyafa</groupId> 
    <artifactId>tibco</artifactId> 
    <packaging>bundle</packaging> 
    <version>1</version> 

    <dependencies> 
     <dependency> 
      <groupId>com.tibco</groupId> 
      <artifactId>tibjms</artifactId> 
      <version>4.4.0</version> 
      <type>jar</type> 
     </dependency> 

     <dependency> 
      <groupId>javax.jms</groupId> 
      <artifactId>javax.jms-api</artifactId> 
      <version>2.0</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.felix</groupId> 
       <artifactId>maven-bundle-plugin</artifactId> 
       <version>3.3.0</version> 
       <extensions>true</extensions> 
       <configuration> 
        <instructions> 
         <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> 
         <Bundle-Name>${project.artifactId}</Bundle-Name> 
         <Export-Package> 
          com.tibco.tibjms.*, 
          com.tibco.tibjms.naming.*, 
          com.tibco.tibjms.naming.tibjmsnaming.*, 
         </Export-Package> 
         <Import-Package> 
          *, 
          !javax.jms.*, 
         </Import-Package> 

         <Embed-Dependency> 
          javax.jms-api;scope=compile|runtime;inline=false; 
         </Embed-Dependency> 
        </instructions> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

ビルドが成功すると、生成されたjarファイル内のjavax.jms-api-2.0.jarのみが表示されます。 enter image description here

jarファイルを両方ともバンドルしたいと思います。どのように私は瓶の1つがthirpartyの瓶であるときにこれを達成することができますか?私はまた、動作しなかった外部ライブラリとしてpomファイルにjarを追加しようとしました。

答えて

1

tibjmsEmbedDependencyを追加することを忘れていませんか?

<Embed-Dependency>*;scope=compile|runtime;inline=false</Embed-Dependency> 

javax.jms-apiがすでにバンドルとしてパッケージ化されていることに注意してください:あなたはまた、すべてのコンパイルおよび実行時のdepenedencies埋め込むことができます。 tibcoアーチファクトの唯一の目的が、tibjmsjms-apiをバンドルする場合は、それを完全にスキップして、tibjmsをバンドルとしてパッケージングすることができます。次に、tibjmsjms-apiの両方を別々のバンドルとして展開できます。

+0

ありがとうございます! jms-apiによって公開されているメソッドを別のjarと競合しているので、tibjms.jarにしか表示しないようにしたいので、それらを単一のバンドルにしたいと思います。 –

+0

視認性についての良い点! – gjoranv

関連する問題