2017-11-25 1 views
1

maven 번들 플러그인을 사용하여 tibjms.jar와 javax.jms-api-2.0.jar을 하나의 번들로 묶고 싶습니다. tibjms.jar은 메이븐의 repos에없는 때문에 내가 먼저 내 지역의 repo에 추가는 : 빌드가 성공제 3 자 항아리를 메이븐에 묶는 방법?

<?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> 

:

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 

그런 다음 나는 다음과 같은 치어 파일을 생성하고 내장 생성 된 jar 파일의 javax.jms-api-2.0.jar 파일 만 볼 수 있습니다. enter image description here

두 개의 jar 파일을 함께 묶고 싶습니다. 항아리 중 하나가 thirparty jar 일 때 어떻게 이것을 할 수 있습니까? 또한 작동하지 않는 외부 라이브러리로 pom 파일에 항아리를 추가하려고 시도했습니다.

답변

1

tibjmsEmbedDependency을 추가하는 것을 잊지 않았습니까? 당신은 또한 모든 컴파일 및 런타임 depenedencies 포함 할 수 있습니다 :

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

javax.jms-api 이미 번들로 패키지되어 있습니다. tibco 이슈의 유일한 용도가 tibjms 번이고 jms-api 번을 묶는 것이라면이 모든 것을 건너 뛰고 그 대신 번들로 tibjms을 꾸밀 수 있습니다. 그런 다음 tibjmsjms-api을 별도 번들로 배포 할 수 있습니다.

+0

감사합니다. jms-api에 의해 노출 된 메소드가 다른 jar와 충돌 할 때 tibjms.jar에서만 볼 수 있기를 원하기 때문에 이들을 단일 번들에 포함 시키길 원합니다. –

+0

시인성에 대해 좋은 점! – gjoranv

관련 문제